home *** CD-ROM | disk | FTP | other *** search
/ This Disc Bytes! / Power Computing - The Disc 2 - This Disc Bytes.ISO / mac / CodeWarrior 7 Lite for 68K / MacOS Support / Headers / Universal Headers / Movies.h < prev    next >
Text File  |  1995-07-06  |  78KB  |  1,736 lines

  1. /*
  2.      File:        Movies.h
  3.  
  4.      Contains:    QuickTime Interfaces.
  5.  
  6.      Version:    Technology:    QuickTime 2.0
  7.                  Package:    Universal Interfaces 2.1 in “MPW Latest” on ETO #18
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs@applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. */
  19.  
  20. #ifndef __MOVIES__
  21. #define __MOVIES__
  22.  
  23.  
  24. #ifndef __QUICKDRAW__
  25. #include <Quickdraw.h>
  26. #endif
  27. /*    #include <Types.h>                                            */
  28. /*        #include <ConditionalMacros.h>                            */
  29. /*    #include <MixedMode.h>                                        */
  30. /*    #include <QuickdrawText.h>                                    */
  31.  
  32. #ifndef __ALIASES__
  33. #include <Aliases.h>
  34. #endif
  35. /*    #include <AppleTalk.h>                                        */
  36. /*        #include <OSUtils.h>                                    */
  37. /*            #include <Memory.h>                                    */
  38. /*    #include <Files.h>                                            */
  39. /*        #include <Finder.h>                                        */
  40.  
  41. #ifndef __EVENTS__
  42. #include <Events.h>
  43. #endif
  44.  
  45. #ifndef __MENUS__
  46. #include <Menus.h>
  47. #endif
  48.  
  49. #ifndef __COMPONENTS__
  50. #include <Components.h>
  51. #endif
  52.  
  53. #ifndef __IMAGECOMPRESSION__
  54. #include <ImageCompression.h>
  55. #endif
  56. /*    #include <QDOffscreen.h>                                    */
  57. /*        #include <Errors.h>                                        */
  58. /*    #include <Windows.h>                                        */
  59. /*        #include <Controls.h>                                    */
  60. /*    #include <StandardFile.h>                                    */
  61. /*        #include <Dialogs.h>                                    */
  62. /*            #include <TextEdit.h>                                */
  63.  
  64. #ifdef __cplusplus
  65. extern "C" {
  66. #endif
  67.  
  68. #if PRAGMA_ALIGN_SUPPORTED
  69. #pragma options align=mac68k
  70. #endif
  71.  
  72. #if PRAGMA_IMPORT_SUPPORTED
  73. #pragma import on
  74. #endif
  75.  
  76. /*  "kFix1" is defined in FixMath as "fixed1"  */
  77. /* error codes are in Errors.[haa] */
  78. /* gestalt codes are in Gestalt.[hpa] */
  79.  
  80. enum {
  81.     MovieFileType                = 'MooV'
  82. };
  83.  
  84. enum {
  85.     MediaHandlerType            = 'mhlr',
  86.     DataHandlerType                = 'dhlr'
  87. };
  88.  
  89. enum {
  90.     VideoMediaType                = 'vide',
  91.     SoundMediaType                = 'soun',
  92.     TextMediaType                = 'text',
  93.     BaseMediaType                = 'gnrc',
  94.     MPEGMediaType                = 'MPEG',
  95.     MusicMediaType                = 'musi',
  96.     TimeCodeMediaType            = 'tmcd',
  97.     HandleDataHandlerSubType    = 'hndl'
  98. };
  99.  
  100. enum {
  101.     VisualMediaCharacteristic    = 'eyes',
  102.     AudioMediaCharacteristic    = 'ears'
  103. };
  104.  
  105. enum {
  106.     DoTheRightThing                = 0
  107. };
  108.  
  109. struct MovieRecord {
  110.     long                            data[1];
  111. };
  112. typedef struct MovieRecord MovieRecord, *Movie;
  113.  
  114. struct TrackRecord {
  115.     long                            data[1];
  116. };
  117. typedef struct TrackRecord TrackRecord, *Track;
  118.  
  119. struct MediaRecord {
  120.     long                            data[1];
  121. };
  122. typedef struct MediaRecord MediaRecord, *Media;
  123.  
  124. struct UserDataRecord {
  125.     long                            data[1];
  126. };
  127. typedef struct UserDataRecord UserDataRecord, *UserData;
  128.  
  129. struct TrackEditStateRecord {
  130.     long                            data[1];
  131. };
  132. typedef struct TrackEditStateRecord TrackEditStateRecord, *TrackEditState;
  133.  
  134. struct MovieEditStateRecord {
  135.     long                            data[1];
  136. };
  137. typedef struct MovieEditStateRecord MovieEditStateRecord, *MovieEditState;
  138.  
  139. struct SampleDescription {
  140.     long                            descSize;
  141.     long                            dataFormat;
  142.     long                            resvd1;
  143.     short                            resvd2;
  144.     short                            dataRefIndex;
  145. };
  146. typedef struct SampleDescription SampleDescription, *SampleDescriptionPtr, **SampleDescriptionHandle;
  147.  
  148. struct SoundDescription {
  149.     long                            descSize;                    /* total size of SoundDescription including extra data */
  150.     long                            dataFormat;                    /*  */
  151.     long                            resvd1;                        /* reserved for apple use */
  152.     short                            resvd2;
  153.     short                            dataRefIndex;
  154.     short                            version;                    /* which version is this data */
  155.     short                            revlevel;                    /* what version of that codec did this */
  156.     long                            vendor;                        /* whose  codec compressed this data */
  157.     short                            numChannels;                /* number of channels of sound */
  158.     short                            sampleSize;                    /* number of bits per sample */
  159.     short                            compressionID;                /* sound compression used, 0 if none */
  160.     short                            packetSize;                    /* packet size for compression, 0 if no compression */
  161.     Fixed                            sampleRate;                    /* sample rate sound is captured at */
  162. };
  163. typedef struct SoundDescription SoundDescription, *SoundDescriptionPtr, **SoundDescriptionHandle;
  164.  
  165. struct TextDescription {
  166.     long                            descSize;                    /* Total size of TextDescription*/
  167.     long                            dataFormat;                    /* 'text'*/
  168.     long                            resvd1;
  169.     short                            resvd2;
  170.     short                            dataRefIndex;
  171.     long                            displayFlags;                /* see enum below for flag values*/
  172.     long                            textJustification;            /* Can be: teCenter,teFlush -Default,-Right,-Left*/
  173.     RGBColor                        bgColor;                    /* Background color*/
  174.     Rect                            defaultTextBox;                /* Location to place the text within the track bounds*/
  175.     ScrpSTElement                    defaultStyle;                /* Default style (struct defined in TextEdit.h)*/
  176.     char                            defaultFontName[1];            /* Font Name (pascal string - struct extended to fit) */
  177. };
  178. typedef struct TextDescription TextDescription, *TextDescriptionPtr, **TextDescriptionHandle;
  179.  
  180. /*--------------------------
  181.   Music Sample Description
  182. --------------------------*/
  183. struct MusicDescription {
  184.     long                            descSize;
  185.     long                            dataFormat;                    /* 'musi' */
  186.     long                            resvd1;
  187.     short                            resvd2;
  188.     short                            dataRefIndex;
  189.     long                            musicFlags;
  190.     unsigned long                    headerData[1];                /* variable size! */
  191. };
  192. typedef struct MusicDescription MusicDescription;
  193.  
  194. typedef MusicDescription *MusicDescriptionPtr;
  195.  
  196. typedef MusicDescriptionPtr *MusicDescriptionHandle;
  197.  
  198.  
  199. enum {
  200.     dfDontDisplay                = 1 << 0,                        /* Don't display the text*/
  201.     dfDontAutoScale                = 1 << 1,                        /* Don't scale text as track bounds grows or shrinks*/
  202.     dfClipToTextBox                = 1 << 2,                        /* Clip update to the textbox*/
  203.     dfUseMovieBGColor            = 1 << 3,                        /* Set text background to movie's background color*/
  204.     dfShrinkTextBoxToFit        = 1 << 4,                        /* Compute minimum box to fit the sample*/
  205.     dfScrollIn                    = 1 << 5,                        /* Scroll text in until last of text is in view */
  206.     dfScrollOut                    = 1 << 6,                        /* Scroll text out until last of text is gone (if both set, scroll in then out)*/
  207.     dfHorizScroll                = 1 << 7,                        /* Scroll text horizontally (otherwise it's vertical)*/
  208.     dfReverseScroll                = 1 << 8,                        /* vert: scroll down rather than up; horiz: scroll backwards (justfication dependent)*/
  209.     dfContinuousScroll            = 1 << 9,                        /* new samples cause previous samples to scroll out */
  210.     dfFlowHoriz                    = 1 << 10,                        /* horiz scroll text flows in textbox rather than extend to right */
  211.     dfDropShadow                = 1 << 12,                        /* display text with a drop shadow */
  212.     dfAntiAlias                    = 1 << 13,                        /* attempt to display text anti aliased*/
  213.     dfKeyedText                    = 1 << 14,                        /* key the text over background*/
  214.     dfInverseHilite                = 1 << 15                        /* Use inverse hiliting rather than using hilite color*/
  215. };
  216.  
  217. enum {
  218.     searchTextDontGoToFoundTime    = 1L << 16,
  219.     searchTextDontHiliteFoundText = 1L << 17,
  220.     searchTextOneTrackOnly        = 1L << 18,
  221.     searchTextEnabledTracksOnly    = 1L << 19
  222. };
  223.  
  224. /* progress messages */
  225. enum {
  226.     movieProgressOpen            = 0,
  227.     movieProgressUpdatePercent    = 1,
  228.     movieProgressClose            = 2
  229. };
  230.  
  231. /* progress operations */
  232. enum {
  233.     progressOpFlatten            = 1,
  234.     progressOpInsertTrackSegment,
  235.     progressOpInsertMovieSegment,
  236.     progressOpPaste,
  237.     progressOpAddMovieSelection,
  238.     progressOpCopy,
  239.     progressOpCut,
  240.     progressOpLoadMovieIntoRam,
  241.     progressOpLoadTrackIntoRam,
  242.     progressOpLoadMediaIntoRam,
  243.     progressOpImportMovie,
  244.     progressOpExportMovie
  245. };
  246.  
  247. enum {
  248.     mediaQualityDraft            = 0x0000,
  249.     mediaQualityNormal            = 0x0040,
  250.     mediaQualityBetter            = 0x0080,
  251.     mediaQualityBest            = 0x00C0
  252. };
  253.  
  254. typedef pascal OSErr (*MovieRgnCoverProcPtr)(Movie theMovie, RgnHandle changedRgn, long refcon);
  255. typedef pascal OSErr (*MovieProgressProcPtr)(Movie theMovie, short message, short whatOperation, Fixed percentDone, long refcon);
  256. typedef pascal OSErr (*MovieDrawingCompleteProcPtr)(Movie theMovie, long refCon);
  257. typedef pascal OSErr (*TrackTransferProcPtr)(Track t, long refCon);
  258. typedef pascal OSErr (*GetMovieProcPtr)(long offset, long size, void *dataPtr, void *refCon);
  259. typedef pascal Boolean (*MoviePreviewCallOutProcPtr)(long refcon);
  260. typedef pascal void (*MoviesErrorProcPtr)(OSErr theErr, long refcon);
  261. typedef pascal OSErr (*TextMediaProcPtr)(Handle theText, Movie theMovie, short *displayFlag, long refcon);
  262.  
  263. #if GENERATINGCFM
  264. typedef UniversalProcPtr MovieRgnCoverUPP;
  265. typedef UniversalProcPtr MovieProgressUPP;
  266. typedef UniversalProcPtr MovieDrawingCompleteUPP;
  267. typedef UniversalProcPtr TrackTransferUPP;
  268. typedef UniversalProcPtr GetMovieUPP;
  269. typedef UniversalProcPtr MoviePreviewCallOutUPP;
  270. typedef UniversalProcPtr MoviesErrorUPP;
  271. typedef UniversalProcPtr TextMediaUPP;
  272. #else
  273. typedef MovieRgnCoverProcPtr MovieRgnCoverUPP;
  274. typedef MovieProgressProcPtr MovieProgressUPP;
  275. typedef MovieDrawingCompleteProcPtr MovieDrawingCompleteUPP;
  276. typedef TrackTransferProcPtr TrackTransferUPP;
  277. typedef GetMovieProcPtr GetMovieUPP;
  278. typedef MoviePreviewCallOutProcPtr MoviePreviewCallOutUPP;
  279. typedef MoviesErrorProcPtr MoviesErrorUPP;
  280. typedef TextMediaProcPtr TextMediaUPP;
  281. #endif
  282.  
  283. typedef ComponentInstance MediaHandler, DataHandler;
  284.  
  285. typedef Component MediaHandlerComponent, DataHandlerComponent;
  286.  
  287. typedef ComponentResult HandlerError;
  288.  
  289. typedef long TimeValue;
  290.  
  291. typedef long TimeScale;
  292.  
  293. typedef wide CompTimeValue;
  294.  
  295.  
  296. enum {
  297.     loopTimeBase                = 1,
  298.     palindromeLoopTimeBase        = 2,
  299.     maintainTimeBaseZero        = 4
  300. };
  301.  
  302. typedef unsigned long TimeBaseFlags;
  303.  
  304. struct TimeBaseRecord {
  305.     long                            data[1];
  306. };
  307. typedef struct TimeBaseRecord TimeBaseRecord, *TimeBase;
  308.  
  309. struct CallBackRecord {
  310.     long                            data[1];
  311. };
  312. typedef struct CallBackRecord CallBackRecord, *QTCallBack;
  313.  
  314. struct TimeRecord {
  315.     CompTimeValue                    value;                        /* units */
  316.     TimeScale                        scale;                        /* units per second */
  317.     TimeBase                        base;
  318. };
  319. typedef struct TimeRecord TimeRecord;
  320.  
  321. /* CallBack equates */
  322.  
  323. enum {
  324.     triggerTimeFwd                = 0x0001,                        /* when curTime exceeds triggerTime going forward */
  325.     triggerTimeBwd                = 0x0002,                        /* when curTime exceeds triggerTime going backwards */
  326.     triggerTimeEither            = 0x0003,                        /* when curTime exceeds triggerTime going either direction */
  327.     triggerRateLT                = 0x0004,                        /* when rate changes to less than trigger value */
  328.     triggerRateGT                = 0x0008,                        /* when rate changes to greater than trigger value */
  329.     triggerRateEqual            = 0x0010,                        /* when rate changes to equal trigger value */
  330.     triggerRateLTE                = triggerRateLT | triggerRateEqual,
  331.     triggerRateGTE                = triggerRateGT | triggerRateEqual,
  332.     triggerRateNotEqual            = triggerRateGT | triggerRateEqual | triggerRateLT,
  333.     triggerRateChange            = 0,
  334.     triggerAtStart                = 0x0001,
  335.     triggerAtStop                = 0x0002
  336. };
  337.  
  338. typedef unsigned short QTCallBackFlags;
  339.  
  340.  
  341. enum {
  342.     timeBaseBeforeStartTime        = 1,
  343.     timeBaseAfterStopTime        = 2
  344. };
  345.  
  346. typedef unsigned long TimeBaseStatus;
  347.  
  348.  
  349. enum {
  350.     callBackAtTime                = 1,
  351.     callBackAtRate                = 2,
  352.     callBackAtTimeJump            = 3,
  353.     callBackAtExtremes            = 4,
  354.     callBackAtInterrupt            = 0x8000,
  355.     callBackAtDeferredTask        = 0x4000
  356. };
  357.  
  358. typedef unsigned short QTCallBackType;
  359.  
  360. typedef pascal void (*QTCallBackProcPtr)(QTCallBack cb, long refCon);
  361.  
  362. #if GENERATINGCFM
  363. typedef UniversalProcPtr QTCallBackUPP;
  364. #else
  365. typedef QTCallBackProcPtr QTCallBackUPP;
  366. #endif
  367.  
  368.  
  369. enum {
  370.     qtcbNeedsRateChanges        = 1,                            /* wants to know about rate changes */
  371.     qtcbNeedsTimeChanges        = 2,                            /* wants to know about time changes */
  372.     qtcbNeedsStartStopChanges    = 4                                /* wants to know when TimeBase start/stop is changed*/
  373. };
  374.  
  375. struct QTCallBackHeader {
  376.     long                            callBackFlags;
  377.     long                            reserved1;
  378.     SInt8                            qtPrivate[40];
  379. };
  380. typedef struct QTCallBackHeader QTCallBackHeader;
  381.  
  382. typedef pascal void (*QTSyncTaskProcPtr)(void *task);
  383.  
  384. #if GENERATINGCFM
  385. typedef UniversalProcPtr QTSyncTaskUPP;
  386. #else
  387. typedef QTSyncTaskProcPtr QTSyncTaskUPP;
  388. #endif
  389.  
  390. struct QTSyncTaskRecord {
  391.     void                            *qLink;
  392.     QTSyncTaskUPP                    proc;
  393. };
  394. typedef struct QTSyncTaskRecord QTSyncTaskRecord, *QTSyncTaskPtr;
  395.  
  396.  
  397. enum {
  398.     keepInRam                    = 1 << 0,                        /* load and make non-purgable*/
  399.     unkeepInRam                    = 1 << 1,                        /* mark as purgable*/
  400.     flushFromRam                = 1 << 2,                        /* empty those handles*/
  401.     loadForwardTrackEdits        = 1 << 3,                        /*    load track edits into ram for playing forward*/
  402.     loadBackwardTrackEdits        = 1 << 4                        /*    load track edits into ram for playing in reverse*/
  403. };
  404.  
  405. enum {
  406.     newMovieActive                = 1 << 0,
  407.     newMovieDontResolveDataRefs    = 1 << 1,
  408.     newMovieDontAskUnresolvedDataRefs = 1 << 2,
  409.     newMovieDontAutoAlternates    = 1 << 3
  410. };
  411.  
  412. /* track usage bits */
  413. enum {
  414.     trackUsageInMovie            = 1 << 1,
  415.     trackUsageInPreview            = 1 << 2,
  416.     trackUsageInPoster            = 1 << 3
  417. };
  418.  
  419. /* Add/GetMediaSample flags */
  420. enum {
  421.     mediaSampleNotSync            = 1 << 0,                        /* sample is not a sync sample (eg. is frame differenced */
  422.     mediaSampleShadowSync        = 1 << 1                        /* sample is a shadow sync */
  423. };
  424.  
  425. enum {
  426.     pasteInParallel                = 1,
  427.     showUserSettingsDialog        = 2,
  428.     movieToFileOnlyExport        = 4
  429. };
  430.  
  431. enum {
  432.     nextTimeMediaSample            = 1 << 0,
  433.     nextTimeMediaEdit            = 1 << 1,
  434.     nextTimeTrackEdit            = 1 << 2,
  435.     nextTimeSyncSample            = 1 << 3,
  436.     nextTimeEdgeOK                = 1 << 14,
  437.     nextTimeIgnoreActiveSegment    = 1 << 15
  438. };
  439.  
  440. typedef unsigned short nextTimeFlagsEnum;
  441.  
  442.  
  443. enum {
  444.     createMovieFileDeleteCurFile = 1L << 31,
  445.     createMovieFileDontCreateMovie = 1L << 30,
  446.     createMovieFileDontOpenFile    = 1L << 29
  447. };
  448.  
  449. typedef unsigned long createMovieFileFlagsEnum;
  450.  
  451.  
  452. enum {
  453.     flattenAddMovieToDataFork    = 1L << 0,
  454.     flattenActiveTracksOnly        = 1L << 2,
  455.     flattenDontInterleaveFlatten = 1L << 3
  456. };
  457.  
  458. typedef unsigned long movieFlattenFlagsEnum;
  459.  
  460.  
  461. enum {
  462.     movieInDataForkResID        = -1                            /* magic res ID */
  463. };
  464.  
  465. enum {
  466.     mcTopLeftMovie                = 1 << 0,                        /* usually centered */
  467.     mcScaleMovieToFit            = 1 << 1,                        /* usually only scales down */
  468.     mcWithBadge                    = 1 << 2,                        /* give me a badge */
  469.     mcNotVisible                = 1 << 3,                        /* don't show controller */
  470.     mcWithFrame                    = 1 << 4                        /* gimme a frame */
  471. };
  472.  
  473. enum {
  474.     movieScrapDontZeroScrap        = 1 << 0,
  475.     movieScrapOnlyPutMovie        = 1 << 1
  476. };
  477.  
  478. enum {
  479.     dataRefSelfReference        = 1 << 0,
  480.     dataRefWasNotResolved        = 1 << 1
  481. };
  482.  
  483. typedef unsigned long dataRefAttributesFlags;
  484.  
  485.  
  486. enum {
  487.     hintsScrubMode                = 1 << 0,                        /* mask == && (if flags == scrub on, flags != scrub off) */
  488.     hintsLoop                    = 1 << 1,
  489.     hintsDontPurge                = 1 << 2,
  490.     hintsUseScreenBuffer        = 1 << 5,
  491.     hintsAllowInterlace            = 1 << 6,
  492.     hintsUseSoundInterp            = 1 << 7,
  493.     hintsHighQuality            = 1 << 8,                        /* slooooow */
  494.     hintsPalindrome                = 1 << 9,
  495.     hintsInactive                = 1 << 11
  496. };
  497.  
  498. typedef unsigned long playHintsEnum;
  499.  
  500.  
  501. enum {
  502.     mediaHandlerFlagBaseClient    = 1
  503. };
  504.  
  505. typedef unsigned long mediaHandlerFlagsEnum;
  506.  
  507.  
  508. enum {
  509.     movieTrackMediaType            = 1 << 0,
  510.     movieTrackCharacteristic    = 1 << 1,
  511.     movieTrackEnabledOnly        = 1 << 2
  512. };
  513.  
  514. struct SampleReferenceRecord {
  515.     long                            dataOffset;
  516.     long                            dataSize;
  517.     TimeValue                        durationPerSample;
  518.     long                            numberOfSamples;
  519.     short                            sampleFlags;
  520. };
  521. typedef struct SampleReferenceRecord SampleReferenceRecord, *SampleReferencePtr;
  522.  
  523. /*************************
  524. * Initialization Routines 
  525. **************************/
  526. extern pascal OSErr EnterMovies(void)
  527.  TWOWORDINLINE(0x7001, 0xAAAA);
  528. extern pascal void ExitMovies(void)
  529.  TWOWORDINLINE(0x7002, 0xAAAA);
  530. /*************************
  531. * Error Routines 
  532. **************************/
  533. extern pascal OSErr GetMoviesError(void)
  534.  TWOWORDINLINE(0x7003, 0xAAAA);
  535. extern pascal void ClearMoviesStickyError(void)
  536.  THREEWORDINLINE(0x303C, 0xDE, 0xAAAA);
  537. extern pascal OSErr GetMoviesStickyError(void)
  538.  TWOWORDINLINE(0x7004, 0xAAAA);
  539. extern pascal void SetMoviesErrorProc(MoviesErrorUPP errProc, long refcon)
  540.  THREEWORDINLINE(0x303C, 0xEF, 0xAAAA);
  541. /*************************
  542. * Idle Routines 
  543. **************************/
  544. extern pascal void MoviesTask(Movie theMovie, long maxMilliSecToUse)
  545.  TWOWORDINLINE(0x7005, 0xAAAA);
  546. extern pascal OSErr PrerollMovie(Movie theMovie, TimeValue time, Fixed Rate)
  547.  TWOWORDINLINE(0x7006, 0xAAAA);
  548. extern pascal OSErr LoadMovieIntoRam(Movie theMovie, TimeValue time, TimeValue duration, long flags)
  549.  TWOWORDINLINE(0x7007, 0xAAAA);
  550. extern pascal OSErr LoadTrackIntoRam(Track theTrack, TimeValue time, TimeValue duration, long flags)
  551.  THREEWORDINLINE(0x303C, 0x16E, 0xAAAA);
  552. extern pascal OSErr LoadMediaIntoRam(Media theMedia, TimeValue time, TimeValue duration, long flags)
  553.  TWOWORDINLINE(0x7008, 0xAAAA);
  554. extern pascal void SetMovieActive(Movie theMovie, Boolean active)
  555.  TWOWORDINLINE(0x7009, 0xAAAA);
  556. extern pascal Boolean GetMovieActive(Movie theMovie)
  557.  TWOWORDINLINE(0x700A, 0xAAAA);
  558. /*************************
  559. * calls for playing movies, previews, posters
  560. **************************/
  561. extern pascal void StartMovie(Movie theMovie)
  562.  TWOWORDINLINE(0x700B, 0xAAAA);
  563. extern pascal void StopMovie(Movie theMovie)
  564.  TWOWORDINLINE(0x700C, 0xAAAA);
  565. extern pascal void GoToBeginningOfMovie(Movie theMovie)
  566.  TWOWORDINLINE(0x700D, 0xAAAA);
  567. extern pascal void GoToEndOfMovie(Movie theMovie)
  568.  TWOWORDINLINE(0x700E, 0xAAAA);
  569. extern pascal Boolean IsMovieDone(Movie theMovie)
  570.  THREEWORDINLINE(0x303C, 0xDD, 0xAAAA);
  571. extern pascal Boolean GetMoviePreviewMode(Movie theMovie)
  572.  TWOWORDINLINE(0x700F, 0xAAAA);
  573. extern pascal void SetMoviePreviewMode(Movie theMovie, Boolean usePreview)
  574.  TWOWORDINLINE(0x7010, 0xAAAA);
  575. extern pascal void ShowMoviePoster(Movie theMovie)
  576.  TWOWORDINLINE(0x7011, 0xAAAA);
  577. extern pascal void PlayMoviePreview(Movie theMovie, MoviePreviewCallOutUPP callOutProc, long refcon)
  578.  THREEWORDINLINE(0x303C, 0xF2, 0xAAAA);
  579. /*************************
  580. * calls for controlling movies & tracks which are playing
  581. **************************/
  582. extern pascal TimeBase GetMovieTimeBase(Movie theMovie)
  583.  TWOWORDINLINE(0x7012, 0xAAAA);
  584. extern pascal void SetMovieMasterTimeBase(Movie theMovie, TimeBase tb, const TimeRecord *slaveZero)
  585.  THREEWORDINLINE(0x303C, 0x167, 0xAAAA);
  586. extern pascal void SetMovieMasterClock(Movie theMovie, Component clockMeister, const TimeRecord *slaveZero)
  587.  THREEWORDINLINE(0x303C, 0x168, 0xAAAA);
  588. extern pascal void GetMovieGWorld(Movie theMovie, CGrafPtr *port, GDHandle *gdh)
  589.  TWOWORDINLINE(0x7015, 0xAAAA);
  590. extern pascal void SetMovieGWorld(Movie theMovie, CGrafPtr port, GDHandle gdh)
  591.  TWOWORDINLINE(0x7016, 0xAAAA);
  592.  
  593. enum {
  594.     movieDrawingCallWhenChanged    = 0,
  595.     movieDrawingCallAlways        = 1
  596. };
  597.  
  598. extern pascal void SetMovieDrawingCompleteProc(Movie theMovie, long flags, MovieDrawingCompleteUPP proc, long refCon)
  599.  THREEWORDINLINE(0x303C, 0x1DE, 0xAAAA);
  600. extern pascal Track GetNextTrackForCompositing(Movie theMovie, Track theTrack)
  601.  THREEWORDINLINE(0x303C, 0x1FA, 0xAAAA);
  602. extern pascal Track GetPrevTrackForCompositing(Movie theMovie, Track theTrack)
  603.  THREEWORDINLINE(0x303C, 0x1FB, 0xAAAA);
  604. extern pascal void SetTrackGWorld(Track theTrack, CGrafPtr port, GDHandle gdh, TrackTransferUPP proc, long refCon)
  605.  THREEWORDINLINE(0x303C, 0x9D, 0xAAAA);
  606. extern pascal PicHandle GetMoviePict(Movie theMovie, TimeValue time)
  607.  TWOWORDINLINE(0x701D, 0xAAAA);
  608. extern pascal PicHandle GetTrackPict(Track theTrack, TimeValue time)
  609.  TWOWORDINLINE(0x701E, 0xAAAA);
  610. extern pascal PicHandle GetMoviePosterPict(Movie theMovie)
  611.  THREEWORDINLINE(0x303C, 0xF7, 0xAAAA);
  612. /* called between Begin & EndUpdate */
  613. extern pascal OSErr UpdateMovie(Movie theMovie)
  614.  TWOWORDINLINE(0x701F, 0xAAAA);
  615. /**** spatial movie routines ****/
  616. extern pascal void GetMovieBox(Movie theMovie, Rect *boxRect)
  617.  THREEWORDINLINE(0x303C, 0xF9, 0xAAAA);
  618. extern pascal void SetMovieBox(Movie theMovie, const Rect *boxRect)
  619.  THREEWORDINLINE(0x303C, 0xFA, 0xAAAA);
  620. /** movie display clip */
  621. extern pascal RgnHandle GetMovieDisplayClipRgn(Movie theMovie)
  622.  THREEWORDINLINE(0x303C, 0xFC, 0xAAAA);
  623. extern pascal void SetMovieDisplayClipRgn(Movie theMovie, RgnHandle theClip)
  624.  THREEWORDINLINE(0x303C, 0xFD, 0xAAAA);
  625. /** movie src clip */
  626. extern pascal RgnHandle GetMovieClipRgn(Movie theMovie)
  627.  THREEWORDINLINE(0x303C, 0x100, 0xAAAA);
  628. extern pascal void SetMovieClipRgn(Movie theMovie, RgnHandle theClip)
  629.  THREEWORDINLINE(0x303C, 0x101, 0xAAAA);
  630. /** track src clip */
  631. extern pascal RgnHandle GetTrackClipRgn(Track theTrack)
  632.  THREEWORDINLINE(0x303C, 0x102, 0xAAAA);
  633. extern pascal void SetTrackClipRgn(Track theTrack, RgnHandle theClip)
  634.  THREEWORDINLINE(0x303C, 0x103, 0xAAAA);
  635. /** bounds in display space (not clipped by display clip) */
  636. extern pascal RgnHandle GetMovieDisplayBoundsRgn(Movie theMovie)
  637.  THREEWORDINLINE(0x303C, 0xFB, 0xAAAA);
  638. extern pascal RgnHandle GetTrackDisplayBoundsRgn(Track theTrack)
  639.  THREEWORDINLINE(0x303C, 0x112, 0xAAAA);
  640. /** bounds in movie space */
  641. extern pascal RgnHandle GetMovieBoundsRgn(Movie theMovie)
  642.  THREEWORDINLINE(0x303C, 0xFE, 0xAAAA);
  643. extern pascal RgnHandle GetTrackMovieBoundsRgn(Track theTrack)
  644.  THREEWORDINLINE(0x303C, 0xFF, 0xAAAA);
  645. /** bounds in track space */
  646. extern pascal RgnHandle GetTrackBoundsRgn(Track theTrack)
  647.  THREEWORDINLINE(0x303C, 0x111, 0xAAAA);
  648. /** mattes - always in track space */
  649. extern pascal PixMapHandle GetTrackMatte(Track theTrack)
  650.  THREEWORDINLINE(0x303C, 0x115, 0xAAAA);
  651. extern pascal void SetTrackMatte(Track theTrack, PixMapHandle theMatte)
  652.  THREEWORDINLINE(0x303C, 0x116, 0xAAAA);
  653. extern pascal void DisposeMatte(PixMapHandle theMatte)
  654.  THREEWORDINLINE(0x303C, 0x14A, 0xAAAA);
  655. /*************************
  656. * calls for getting/saving movies
  657. **************************/
  658. extern pascal Movie NewMovie(long flags)
  659.  THREEWORDINLINE(0x303C, 0x187, 0xAAAA);
  660. extern pascal OSErr PutMovieIntoHandle(Movie theMovie, Handle publicMovie)
  661.  TWOWORDINLINE(0x7022, 0xAAAA);
  662. extern pascal OSErr PutMovieIntoDataFork(Movie theMovie, short fRefNum, long offset, long maxSize)
  663.  THREEWORDINLINE(0x303C, 0x1B4, 0xAAAA);
  664. extern pascal void DisposeMovie(Movie theMovie)
  665.  TWOWORDINLINE(0x7023, 0xAAAA);
  666. /*************************
  667. * Movie State Routines
  668. **************************/
  669. extern pascal unsigned long GetMovieCreationTime(Movie theMovie)
  670.  TWOWORDINLINE(0x7026, 0xAAAA);
  671. extern pascal unsigned long GetMovieModificationTime(Movie theMovie)
  672.  TWOWORDINLINE(0x7027, 0xAAAA);
  673. extern pascal TimeScale GetMovieTimeScale(Movie theMovie)
  674.  TWOWORDINLINE(0x7029, 0xAAAA);
  675. extern pascal void SetMovieTimeScale(Movie theMovie, TimeScale timeScale)
  676.  TWOWORDINLINE(0x702A, 0xAAAA);
  677. extern pascal TimeValue GetMovieDuration(Movie theMovie)
  678.  TWOWORDINLINE(0x702B, 0xAAAA);
  679. extern pascal Fixed GetMovieRate(Movie theMovie)
  680.  TWOWORDINLINE(0x702C, 0xAAAA);
  681. extern pascal void SetMovieRate(Movie theMovie, Fixed rate)
  682.  TWOWORDINLINE(0x702D, 0xAAAA);
  683. extern pascal Fixed GetMoviePreferredRate(Movie theMovie)
  684.  THREEWORDINLINE(0x303C, 0xF3, 0xAAAA);
  685. extern pascal void SetMoviePreferredRate(Movie theMovie, Fixed rate)
  686.  THREEWORDINLINE(0x303C, 0xF4, 0xAAAA);
  687. extern pascal short GetMoviePreferredVolume(Movie theMovie)
  688.  THREEWORDINLINE(0x303C, 0xF5, 0xAAAA);
  689. extern pascal void SetMoviePreferredVolume(Movie theMovie, short volume)
  690.  THREEWORDINLINE(0x303C, 0xF6, 0xAAAA);
  691. extern pascal short GetMovieVolume(Movie theMovie)
  692.  TWOWORDINLINE(0x702E, 0xAAAA);
  693. extern pascal void SetMovieVolume(Movie theMovie, short volume)
  694.  TWOWORDINLINE(0x702F, 0xAAAA);
  695. extern pascal void GetMovieMatrix(Movie theMovie, MatrixRecord *matrix)
  696.  TWOWORDINLINE(0x7031, 0xAAAA);
  697. extern pascal void SetMovieMatrix(Movie theMovie, const MatrixRecord *matrix)
  698.  TWOWORDINLINE(0x7032, 0xAAAA);
  699. extern pascal void GetMoviePreviewTime(Movie theMovie, TimeValue *previewTime, TimeValue *previewDuration)
  700.  TWOWORDINLINE(0x7033, 0xAAAA);
  701. extern pascal void SetMoviePreviewTime(Movie theMovie, TimeValue previewTime, TimeValue previewDuration)
  702.  TWOWORDINLINE(0x7034, 0xAAAA);
  703. extern pascal TimeValue GetMoviePosterTime(Movie theMovie)
  704.  TWOWORDINLINE(0x7035, 0xAAAA);
  705. extern pascal void SetMoviePosterTime(Movie theMovie, TimeValue posterTime)
  706.  TWOWORDINLINE(0x7036, 0xAAAA);
  707. extern pascal void GetMovieSelection(Movie theMovie, TimeValue *selectionTime, TimeValue *selectionDuration)
  708.  TWOWORDINLINE(0x7037, 0xAAAA);
  709. extern pascal void SetMovieSelection(Movie theMovie, TimeValue selectionTime, TimeValue selectionDuration)
  710.  TWOWORDINLINE(0x7038, 0xAAAA);
  711. extern pascal void SetMovieActiveSegment(Movie theMovie, TimeValue startTime, TimeValue duration)
  712.  THREEWORDINLINE(0x303C, 0x15C, 0xAAAA);
  713. extern pascal void GetMovieActiveSegment(Movie theMovie, TimeValue *startTime, TimeValue *duration)
  714.  THREEWORDINLINE(0x303C, 0x15D, 0xAAAA);
  715. extern pascal TimeValue GetMovieTime(Movie theMovie, TimeRecord *currentTime)
  716.  TWOWORDINLINE(0x7039, 0xAAAA);
  717. extern pascal void SetMovieTime(Movie theMovie, const TimeRecord *newtime)
  718.  TWOWORDINLINE(0x703C, 0xAAAA);
  719. extern pascal void SetMovieTimeValue(Movie theMovie, TimeValue newtime)
  720.  TWOWORDINLINE(0x703D, 0xAAAA);
  721. extern pascal UserData GetMovieUserData(Movie theMovie)
  722.  TWOWORDINLINE(0x703E, 0xAAAA);
  723. /*************************
  724. * Track/Media finding routines
  725. **************************/
  726. extern pascal long GetMovieTrackCount(Movie theMovie)
  727.  TWOWORDINLINE(0x703F, 0xAAAA);
  728. extern pascal Track GetMovieTrack(Movie theMovie, long trackID)
  729.  TWOWORDINLINE(0x7040, 0xAAAA);
  730. extern pascal Track GetMovieIndTrack(Movie theMovie, long index)
  731.  THREEWORDINLINE(0x303C, 0x117, 0xAAAA);
  732. extern pascal Track GetMovieIndTrackType(Movie theMovie, long index, OSType trackType, long flags)
  733.  THREEWORDINLINE(0x303C, 0x208, 0xAAAA);
  734. extern pascal long GetTrackID(Track theTrack)
  735.  THREEWORDINLINE(0x303C, 0x127, 0xAAAA);
  736. extern pascal Movie GetTrackMovie(Track theTrack)
  737.  THREEWORDINLINE(0x303C, 0xD0, 0xAAAA);
  738. /*************************
  739. * Track creation routines
  740. **************************/
  741. extern pascal Track NewMovieTrack(Movie theMovie, Fixed width, Fixed height, short trackVolume)
  742.  THREEWORDINLINE(0x303C, 0x188, 0xAAAA);
  743. extern pascal void DisposeMovieTrack(Track theTrack)
  744.  TWOWORDINLINE(0x7042, 0xAAAA);
  745. /*************************
  746. * Track State routines
  747. **************************/
  748. extern pascal unsigned long GetTrackCreationTime(Track theTrack)
  749.  TWOWORDINLINE(0x7043, 0xAAAA);
  750. extern pascal unsigned long GetTrackModificationTime(Track theTrack)
  751.  TWOWORDINLINE(0x7044, 0xAAAA);
  752. extern pascal Boolean GetTrackEnabled(Track theTrack)
  753.  TWOWORDINLINE(0x7045, 0xAAAA);
  754. extern pascal void SetTrackEnabled(Track theTrack, Boolean isEnabled)
  755.  TWOWORDINLINE(0x7046, 0xAAAA);
  756. extern pascal long GetTrackUsage(Track theTrack)
  757.  TWOWORDINLINE(0x7047, 0xAAAA);
  758. extern pascal void SetTrackUsage(Track theTrack, long usage)
  759.  TWOWORDINLINE(0x7048, 0xAAAA);
  760. extern pascal TimeValue GetTrackDuration(Track theTrack)
  761.  TWOWORDINLINE(0x704B, 0xAAAA);
  762. extern pascal TimeValue GetTrackOffset(Track theTrack)
  763.  TWOWORDINLINE(0x704C, 0xAAAA);
  764. extern pascal void SetTrackOffset(Track theTrack, TimeValue movieOffsetTime)
  765.  TWOWORDINLINE(0x704D, 0xAAAA);
  766. extern pascal short GetTrackLayer(Track theTrack)
  767.  TWOWORDINLINE(0x7050, 0xAAAA);
  768. extern pascal void SetTrackLayer(Track theTrack, short layer)
  769.  TWOWORDINLINE(0x7051, 0xAAAA);
  770. extern pascal Track GetTrackAlternate(Track theTrack)
  771.  TWOWORDINLINE(0x7052, 0xAAAA);
  772. extern pascal void SetTrackAlternate(Track theTrack, Track alternateT)
  773.  TWOWORDINLINE(0x7053, 0xAAAA);
  774. extern pascal void SetAutoTrackAlternatesEnabled(Movie theMovie, Boolean enable)
  775.  THREEWORDINLINE(0x303C, 0x15E, 0xAAAA);
  776. extern pascal void SelectMovieAlternates(Movie theMovie)
  777.  THREEWORDINLINE(0x303C, 0x15F, 0xAAAA);
  778. extern pascal short GetTrackVolume(Track theTrack)
  779.  TWOWORDINLINE(0x7054, 0xAAAA);
  780. extern pascal void SetTrackVolume(Track theTrack, short volume)
  781.  TWOWORDINLINE(0x7055, 0xAAAA);
  782. extern pascal void GetTrackMatrix(Track theTrack, MatrixRecord *matrix)
  783.  TWOWORDINLINE(0x7056, 0xAAAA);
  784. extern pascal void SetTrackMatrix(Track theTrack, const MatrixRecord *matrix)
  785.  TWOWORDINLINE(0x7057, 0xAAAA);
  786. extern pascal void GetTrackDimensions(Track theTrack, Fixed *width, Fixed *height)
  787.  TWOWORDINLINE(0x705D, 0xAAAA);
  788. extern pascal void SetTrackDimensions(Track theTrack, Fixed width, Fixed height)
  789.  TWOWORDINLINE(0x705E, 0xAAAA);
  790. extern pascal UserData GetTrackUserData(Track theTrack)
  791.  TWOWORDINLINE(0x705F, 0xAAAA);
  792. /*************************
  793. * get Media routines
  794. **************************/
  795. extern pascal Media NewTrackMedia(Track theTrack, OSType mediaType, TimeScale timeScale, Handle dataRef, OSType dataRefType)
  796.  THREEWORDINLINE(0x303C, 0x18E, 0xAAAA);
  797. extern pascal void DisposeTrackMedia(Media theMedia)
  798.  TWOWORDINLINE(0x7061, 0xAAAA);
  799. extern pascal Media GetTrackMedia(Track theTrack)
  800.  TWOWORDINLINE(0x7062, 0xAAAA);
  801. extern pascal Track GetMediaTrack(Media theMedia)
  802.  THREEWORDINLINE(0x303C, 0xC5, 0xAAAA);
  803. /*************************
  804. * Media State routines
  805. **************************/
  806. extern pascal unsigned long GetMediaCreationTime(Media theMedia)
  807.  TWOWORDINLINE(0x7066, 0xAAAA);
  808. extern pascal unsigned long GetMediaModificationTime(Media theMedia)
  809.  TWOWORDINLINE(0x7067, 0xAAAA);
  810. extern pascal TimeScale GetMediaTimeScale(Media theMedia)
  811.  TWOWORDINLINE(0x7068, 0xAAAA);
  812. extern pascal void SetMediaTimeScale(Media theMedia, TimeScale timeScale)
  813.  TWOWORDINLINE(0x7069, 0xAAAA);
  814. extern pascal TimeValue GetMediaDuration(Media theMedia)
  815.  TWOWORDINLINE(0x706A, 0xAAAA);
  816. extern pascal short GetMediaLanguage(Media theMedia)
  817.  TWOWORDINLINE(0x706B, 0xAAAA);
  818. extern pascal void SetMediaLanguage(Media theMedia, short language)
  819.  TWOWORDINLINE(0x706C, 0xAAAA);
  820. extern pascal short GetMediaQuality(Media theMedia)
  821.  TWOWORDINLINE(0x706D, 0xAAAA);
  822. extern pascal void SetMediaQuality(Media theMedia, short quality)
  823.  TWOWORDINLINE(0x706E, 0xAAAA);
  824. extern pascal void GetMediaHandlerDescription(Media theMedia, OSType *mediaType, Str255 creatorName, OSType *creatorManufacturer)
  825.  TWOWORDINLINE(0x706F, 0xAAAA);
  826. extern pascal UserData GetMediaUserData(Media theMedia)
  827.  TWOWORDINLINE(0x7070, 0xAAAA);
  828. /*************************
  829. * Media Handler routines
  830. **************************/
  831. extern pascal MediaHandler GetMediaHandler(Media theMedia)
  832.  TWOWORDINLINE(0x7071, 0xAAAA);
  833. extern pascal OSErr SetMediaHandler(Media theMedia, MediaHandlerComponent mH)
  834.  THREEWORDINLINE(0x303C, 0x190, 0xAAAA);
  835. /*************************
  836. * Media's Data routines
  837. **************************/
  838. extern pascal OSErr BeginMediaEdits(Media theMedia)
  839.  TWOWORDINLINE(0x7072, 0xAAAA);
  840. extern pascal OSErr EndMediaEdits(Media theMedia)
  841.  TWOWORDINLINE(0x7073, 0xAAAA);
  842. extern pascal OSErr SetMediaDefaultDataRefIndex(Media theMedia, short index)
  843.  THREEWORDINLINE(0x303C, 0x1E0, 0xAAAA);
  844. extern pascal void GetMediaDataHandlerDescription(Media theMedia, short index, OSType *dhType, Str255 creatorName, OSType *creatorManufacturer)
  845.  THREEWORDINLINE(0x303C, 0x19E, 0xAAAA);
  846. extern pascal DataHandler GetMediaDataHandler(Media theMedia, short index)
  847.  THREEWORDINLINE(0x303C, 0x19F, 0xAAAA);
  848. extern pascal OSErr SetMediaDataHandler(Media theMedia, short index, DataHandlerComponent dataHandler)
  849.  THREEWORDINLINE(0x303C, 0x1A0, 0xAAAA);
  850. extern pascal Component GetDataHandler(Handle dataRef, OSType dataHandlerSubType, long flags)
  851.  THREEWORDINLINE(0x303C, 0x1ED, 0xAAAA);
  852. /*************************
  853. * Media Sample Table Routines
  854. **************************/
  855. extern pascal long GetMediaSampleDescriptionCount(Media theMedia)
  856.  TWOWORDINLINE(0x7077, 0xAAAA);
  857. extern pascal void GetMediaSampleDescription(Media theMedia, long index, SampleDescriptionHandle descH)
  858.  TWOWORDINLINE(0x7078, 0xAAAA);
  859. extern pascal OSErr SetMediaSampleDescription(Media theMedia, long index, SampleDescriptionHandle descH)
  860.  THREEWORDINLINE(0x303C, 0x1D0, 0xAAAA);
  861. extern pascal long GetMediaSampleCount(Media theMedia)
  862.  TWOWORDINLINE(0x7079, 0xAAAA);
  863. extern pascal void SampleNumToMediaTime(Media theMedia, long logicalSampleNum, TimeValue *sampleTime, TimeValue *sampleDuration)
  864.  TWOWORDINLINE(0x707A, 0xAAAA);
  865. extern pascal void MediaTimeToSampleNum(Media theMedia, TimeValue time, long *sampleNum, TimeValue *sampleTime, TimeValue *sampleDuration)
  866.  TWOWORDINLINE(0x707B, 0xAAAA);
  867. extern pascal OSErr AddMediaSample(Media theMedia, Handle dataIn, long inOffset, unsigned long size, TimeValue durationPerSample, SampleDescriptionHandle sampleDescriptionH, long numberOfSamples, short sampleFlags, TimeValue *sampleTime)
  868.  TWOWORDINLINE(0x707C, 0xAAAA);
  869. extern pascal OSErr AddMediaSampleReference(Media theMedia, long dataOffset, unsigned long size, TimeValue durationPerSample, SampleDescriptionHandle sampleDescriptionH, long numberOfSamples, short sampleFlags, TimeValue *sampleTime)
  870.  TWOWORDINLINE(0x707D, 0xAAAA);
  871. extern pascal OSErr AddMediaSampleReferences(Media theMedia, SampleDescriptionHandle sampleDescriptionH, long numberOfSamples, SampleReferencePtr sampleRefs, TimeValue *sampleTime)
  872.  THREEWORDINLINE(0x303C, 0x1F7, 0xAAAA);
  873. extern pascal OSErr GetMediaSample(Media theMedia, Handle dataOut, long maxSizeToGrow, long *size, TimeValue time, TimeValue *sampleTime, TimeValue *durationPerSample, SampleDescriptionHandle sampleDescriptionH, long *sampleDescriptionIndex, long maxNumberOfSamples, long *numberOfSamples, short *sampleFlags)
  874.  TWOWORDINLINE(0x707E, 0xAAAA);
  875. extern pascal OSErr GetMediaSampleReference(Media theMedia, long *dataOffset, long *size, TimeValue time, TimeValue *sampleTime, TimeValue *durationPerSample, SampleDescriptionHandle sampleDescriptionH, long *sampleDescriptionIndex, long maxNumberOfSamples, long *numberOfSamples, short *sampleFlags)
  876.  TWOWORDINLINE(0x707F, 0xAAAA);
  877. extern pascal OSErr SetMediaPreferredChunkSize(Media theMedia, long maxChunkSize)
  878.  THREEWORDINLINE(0x303C, 0x1F8, 0xAAAA);
  879. extern pascal OSErr GetMediaPreferredChunkSize(Media theMedia, long *maxChunkSize)
  880.  THREEWORDINLINE(0x303C, 0x1F9, 0xAAAA);
  881. extern pascal OSErr SetMediaShadowSync(Media theMedia, long frameDiffSampleNum, long syncSampleNum)
  882.  THREEWORDINLINE(0x303C, 0x121, 0xAAAA);
  883. extern pascal OSErr GetMediaShadowSync(Media theMedia, long frameDiffSampleNum, long *syncSampleNum)
  884.  THREEWORDINLINE(0x303C, 0x122, 0xAAAA);
  885. /*************************
  886. * Editing Routines
  887. **************************/
  888. extern pascal OSErr InsertMediaIntoTrack(Track theTrack, TimeValue trackStart, TimeValue mediaTime, TimeValue mediaDuration, Fixed mediaRate)
  889.  THREEWORDINLINE(0x303C, 0x183, 0xAAAA);
  890. extern pascal OSErr InsertTrackSegment(Track srcTrack, Track dstTrack, TimeValue srcIn, TimeValue srcDuration, TimeValue dstIn)
  891.  THREEWORDINLINE(0x303C, 0x85, 0xAAAA);
  892. extern pascal OSErr InsertMovieSegment(Movie srcMovie, Movie dstMovie, TimeValue srcIn, TimeValue srcDuration, TimeValue dstIn)
  893.  THREEWORDINLINE(0x303C, 0x86, 0xAAAA);
  894. extern pascal OSErr InsertEmptyTrackSegment(Track dstTrack, TimeValue dstIn, TimeValue dstDuration)
  895.  THREEWORDINLINE(0x303C, 0x87, 0xAAAA);
  896. extern pascal OSErr InsertEmptyMovieSegment(Movie dstMovie, TimeValue dstIn, TimeValue dstDuration)
  897.  THREEWORDINLINE(0x303C, 0x88, 0xAAAA);
  898. extern pascal OSErr DeleteTrackSegment(Track theTrack, TimeValue startTime, TimeValue duration)
  899.  THREEWORDINLINE(0x303C, 0x89, 0xAAAA);
  900. extern pascal OSErr DeleteMovieSegment(Movie theMovie, TimeValue startTime, TimeValue duration)
  901.  THREEWORDINLINE(0x303C, 0x8A, 0xAAAA);
  902. extern pascal OSErr ScaleTrackSegment(Track theTrack, TimeValue startTime, TimeValue oldDuration, TimeValue newDuration)
  903.  THREEWORDINLINE(0x303C, 0x8B, 0xAAAA);
  904. extern pascal OSErr ScaleMovieSegment(Movie theMovie, TimeValue startTime, TimeValue oldDuration, TimeValue newDuration)
  905.  THREEWORDINLINE(0x303C, 0x8C, 0xAAAA);
  906. /*************************
  907. * Hi-level Editing Routines
  908. **************************/
  909. extern pascal Movie CutMovieSelection(Movie theMovie)
  910.  THREEWORDINLINE(0x303C, 0x8D, 0xAAAA);
  911. extern pascal Movie CopyMovieSelection(Movie theMovie)
  912.  THREEWORDINLINE(0x303C, 0x8E, 0xAAAA);
  913. extern pascal void PasteMovieSelection(Movie theMovie, Movie src)
  914.  THREEWORDINLINE(0x303C, 0x8F, 0xAAAA);
  915. extern pascal void AddMovieSelection(Movie theMovie, Movie src)
  916.  THREEWORDINLINE(0x303C, 0x152, 0xAAAA);
  917. extern pascal void ClearMovieSelection(Movie theMovie)
  918.  THREEWORDINLINE(0x303C, 0xE1, 0xAAAA);
  919. extern pascal OSErr PasteHandleIntoMovie(Handle h, OSType handleType, Movie theMovie, long flags, ComponentInstance userComp)
  920.  THREEWORDINLINE(0x303C, 0xCB, 0xAAAA);
  921. extern pascal OSErr PutMovieIntoTypedHandle(Movie theMovie, Track targetTrack, OSType handleType, Handle publicMovie, TimeValue start, TimeValue dur, long flags, ComponentInstance userComp)
  922.  THREEWORDINLINE(0x303C, 0x1CD, 0xAAAA);
  923. extern pascal Component IsScrapMovie(Track targetTrack)
  924.  THREEWORDINLINE(0x303C, 0xCC, 0xAAAA);
  925. /*************************
  926. * Middle-level Editing Routines
  927. **************************/
  928. extern pascal OSErr CopyTrackSettings(Track srcTrack, Track dstTrack)
  929.  THREEWORDINLINE(0x303C, 0x153, 0xAAAA);
  930. extern pascal OSErr CopyMovieSettings(Movie srcMovie, Movie dstMovie)
  931.  THREEWORDINLINE(0x303C, 0x154, 0xAAAA);
  932. extern pascal OSErr AddEmptyTrackToMovie(Track srcTrack, Movie dstMovie, Handle dataRef, OSType dataRefType, Track *dstTrack)
  933.  TWOWORDINLINE(0x7074, 0xAAAA);
  934. /*************************
  935. * movie & track edit state routines
  936. **************************/
  937. extern pascal MovieEditState NewMovieEditState(Movie theMovie)
  938.  THREEWORDINLINE(0x303C, 0x104, 0xAAAA);
  939. extern pascal OSErr UseMovieEditState(Movie theMovie, MovieEditState toState)
  940.  THREEWORDINLINE(0x303C, 0x105, 0xAAAA);
  941. extern pascal OSErr DisposeMovieEditState(MovieEditState state)
  942.  THREEWORDINLINE(0x303C, 0x106, 0xAAAA);
  943. extern pascal TrackEditState NewTrackEditState(Track theTrack)
  944.  THREEWORDINLINE(0x303C, 0x107, 0xAAAA);
  945. extern pascal OSErr UseTrackEditState(Track theTrack, TrackEditState state)
  946.  THREEWORDINLINE(0x303C, 0x108, 0xAAAA);
  947. extern pascal OSErr DisposeTrackEditState(TrackEditState state)
  948.  THREEWORDINLINE(0x303C, 0x109, 0xAAAA);
  949. /*************************
  950. * track reference routines
  951. **************************/
  952. extern pascal OSErr AddTrackReference(Track theTrack, Track refTrack, OSType refType, long *addedIndex)
  953.  THREEWORDINLINE(0x303C, 0x1F0, 0xAAAA);
  954. extern pascal OSErr DeleteTrackReference(Track theTrack, OSType refType, long index)
  955.  THREEWORDINLINE(0x303C, 0x1F1, 0xAAAA);
  956. extern pascal OSErr SetTrackReference(Track theTrack, Track refTrack, OSType refType, long index)
  957.  THREEWORDINLINE(0x303C, 0x1F2, 0xAAAA);
  958. extern pascal Track GetTrackReference(Track theTrack, OSType refType, long index)
  959.  THREEWORDINLINE(0x303C, 0x1F3, 0xAAAA);
  960. extern pascal OSType GetNextTrackReferenceType(Track theTrack, OSType refType)
  961.  THREEWORDINLINE(0x303C, 0x1F4, 0xAAAA);
  962. extern pascal long GetTrackReferenceCount(Track theTrack, OSType refType)
  963.  THREEWORDINLINE(0x303C, 0x1F5, 0xAAAA);
  964. /*************************
  965. * high level file conversion routines
  966. **************************/
  967. extern pascal OSErr ConvertFileToMovieFile(const FSSpec *inputFile, const FSSpec *outputFile, OSType creator, ScriptCode scriptTag, short *resID, long flags, ComponentInstance userComp, MovieProgressUPP proc, long refCon)
  968.  THREEWORDINLINE(0x303C, 0x1CB, 0xAAAA);
  969. extern pascal OSErr ConvertMovieToFile(Movie theMovie, Track onlyTrack, FSSpec *outputFile, OSType fileType, OSType creator, ScriptCode scriptTag, short *resID, long flags, ComponentInstance userComp)
  970.  THREEWORDINLINE(0x303C, 0x1CC, 0xAAAA);
  971. /*************************
  972. * Movie Timebase Conversion Routines
  973. **************************/
  974. extern pascal TimeValue TrackTimeToMediaTime(TimeValue value, Track theTrack)
  975.  THREEWORDINLINE(0x303C, 0x96, 0xAAAA);
  976. extern pascal Fixed GetTrackEditRate(Track theTrack, TimeValue atTime)
  977.  THREEWORDINLINE(0x303C, 0x123, 0xAAAA);
  978. /*************************
  979. * Miscellaneous Routines
  980. **************************/
  981. extern pascal long GetMovieDataSize(Movie theMovie, TimeValue startTime, TimeValue duration)
  982.  THREEWORDINLINE(0x303C, 0x98, 0xAAAA);
  983. extern pascal long GetTrackDataSize(Track theTrack, TimeValue startTime, TimeValue duration)
  984.  THREEWORDINLINE(0x303C, 0x149, 0xAAAA);
  985. extern pascal long GetMediaDataSize(Media theMedia, TimeValue startTime, TimeValue duration)
  986.  THREEWORDINLINE(0x303C, 0x99, 0xAAAA);
  987. extern pascal Boolean PtInMovie(Movie theMovie, Point pt)
  988.  THREEWORDINLINE(0x303C, 0x9A, 0xAAAA);
  989. extern pascal Boolean PtInTrack(Track theTrack, Point pt)
  990.  THREEWORDINLINE(0x303C, 0x9B, 0xAAAA);
  991. /*************************
  992. * Group Selection Routines
  993. **************************/
  994. extern pascal void SetMovieLanguage(Movie theMovie, long language)
  995.  THREEWORDINLINE(0x303C, 0x9C, 0xAAAA);
  996. /*************************
  997. * User Data
  998. **************************/
  999. extern pascal OSErr GetUserData(UserData theUserData, Handle data, OSType udType, long index)
  1000.  THREEWORDINLINE(0x303C, 0x9E, 0xAAAA);
  1001. extern pascal OSErr AddUserData(UserData theUserData, Handle data, OSType udType)
  1002.  THREEWORDINLINE(0x303C, 0x9F, 0xAAAA);
  1003. extern pascal OSErr RemoveUserData(UserData theUserData, OSType udType, long index)
  1004.  THREEWORDINLINE(0x303C, 0xA0, 0xAAAA);
  1005. extern pascal short CountUserDataType(UserData theUserData, OSType udType)
  1006.  THREEWORDINLINE(0x303C, 0x14B, 0xAAAA);
  1007. extern pascal long GetNextUserDataType(UserData theUserData, OSType udType)
  1008.  THREEWORDINLINE(0x303C, 0x1A5, 0xAAAA);
  1009. extern pascal OSErr GetUserDataItem(UserData theUserData, void *data, long size, OSType udType, long index)
  1010.  THREEWORDINLINE(0x303C, 0x126, 0xAAAA);
  1011. extern pascal OSErr SetUserDataItem(UserData theUserData, void *data, long size, OSType udType, long index)
  1012.  THREEWORDINLINE(0x303C, 0x12E, 0xAAAA);
  1013. extern pascal OSErr AddUserDataText(UserData theUserData, Handle data, OSType udType, long index, short itlRegionTag)
  1014.  THREEWORDINLINE(0x303C, 0x14C, 0xAAAA);
  1015. extern pascal OSErr GetUserDataText(UserData theUserData, Handle data, OSType udType, long index, short itlRegionTag)
  1016.  THREEWORDINLINE(0x303C, 0x14D, 0xAAAA);
  1017. extern pascal OSErr RemoveUserDataText(UserData theUserData, OSType udType, long index, short itlRegionTag)
  1018.  THREEWORDINLINE(0x303C, 0x14E, 0xAAAA);
  1019. extern pascal OSErr NewUserData(UserData *theUserData)
  1020.  THREEWORDINLINE(0x303C, 0x12F, 0xAAAA);
  1021. extern pascal OSErr DisposeUserData(UserData theUserData)
  1022.  THREEWORDINLINE(0x303C, 0x130, 0xAAAA);
  1023. extern pascal OSErr NewUserDataFromHandle(Handle h, UserData *theUserData)
  1024.  THREEWORDINLINE(0x303C, 0x131, 0xAAAA);
  1025. extern pascal OSErr PutUserDataIntoHandle(UserData theUserData, Handle h)
  1026.  THREEWORDINLINE(0x303C, 0x132, 0xAAAA);
  1027. extern pascal void GetMediaNextInterestingTime(Media theMedia, short interestingTimeFlags, TimeValue time, Fixed rate, TimeValue *interestingTime, TimeValue *interestingDuration)
  1028.  THREEWORDINLINE(0x303C, 0x16D, 0xAAAA);
  1029. extern pascal void GetTrackNextInterestingTime(Track theTrack, short interestingTimeFlags, TimeValue time, Fixed rate, TimeValue *interestingTime, TimeValue *interestingDuration)
  1030.  THREEWORDINLINE(0x303C, 0xE2, 0xAAAA);
  1031. extern pascal void GetMovieNextInterestingTime(Movie theMovie, short interestingTimeFlags, short numMediaTypes, const OSType *whichMediaTypes, TimeValue time, Fixed rate, TimeValue *interestingTime, TimeValue *interestingDuration)
  1032.  THREEWORDINLINE(0x303C, 0x10E, 0xAAAA);
  1033. extern pascal OSErr CreateMovieFile(const FSSpec *fileSpec, OSType creator, ScriptCode scriptTag, long createMovieFileFlags, short *resRefNum, Movie *newmovie)
  1034.  THREEWORDINLINE(0x303C, 0x191, 0xAAAA);
  1035. extern pascal OSErr OpenMovieFile(const FSSpec *fileSpec, short *resRefNum, SInt8 permission)
  1036.  THREEWORDINLINE(0x303C, 0x192, 0xAAAA);
  1037. extern pascal OSErr CloseMovieFile(short resRefNum)
  1038.  THREEWORDINLINE(0x303C, 0xD5, 0xAAAA);
  1039. extern pascal OSErr DeleteMovieFile(const FSSpec *fileSpec)
  1040.  THREEWORDINLINE(0x303C, 0x175, 0xAAAA);
  1041. extern pascal OSErr NewMovieFromFile(Movie *theMovie, short resRefNum, short *resId, StringPtr resName, short newMovieFlags, Boolean *dataRefWasChanged)
  1042.  THREEWORDINLINE(0x303C, 0xF0, 0xAAAA);
  1043. extern pascal OSErr NewMovieFromHandle(Movie *theMovie, Handle h, short newMovieFlags, Boolean *dataRefWasChanged)
  1044.  THREEWORDINLINE(0x303C, 0xF1, 0xAAAA);
  1045. extern pascal OSErr NewMovieFromDataFork(Movie *theMovie, short fRefNum, long fileOffset, short newMovieFlags, Boolean *dataRefWasChanged)
  1046.  THREEWORDINLINE(0x303C, 0x1B3, 0xAAAA);
  1047. extern pascal OSErr NewMovieFromUserProc(Movie *m, short flags, Boolean *dataRefWasChanged, GetMovieUPP getProc, void *refCon, Handle defaultDataRef, OSType dataRefType)
  1048.  THREEWORDINLINE(0x303C, 0x1EC, 0xAAAA);
  1049. extern pascal OSErr AddMovieResource(Movie theMovie, short resRefNum, short *resId, ConstStr255Param resName)
  1050.  THREEWORDINLINE(0x303C, 0xD7, 0xAAAA);
  1051. extern pascal OSErr UpdateMovieResource(Movie theMovie, short resRefNum, short resId, ConstStr255Param resName)
  1052.  THREEWORDINLINE(0x303C, 0xD8, 0xAAAA);
  1053. extern pascal OSErr RemoveMovieResource(short resRefNum, short resId)
  1054.  THREEWORDINLINE(0x303C, 0x176, 0xAAAA);
  1055. extern pascal Boolean HasMovieChanged(Movie theMovie)
  1056.  THREEWORDINLINE(0x303C, 0xD9, 0xAAAA);
  1057. extern pascal void ClearMovieChanged(Movie theMovie)
  1058.  THREEWORDINLINE(0x303C, 0x113, 0xAAAA);
  1059. extern pascal OSErr SetMovieDefaultDataRef(Movie theMovie, Handle dataRef, OSType dataRefType)
  1060.  THREEWORDINLINE(0x303C, 0x1C1, 0xAAAA);
  1061. extern pascal OSErr GetMovieDefaultDataRef(Movie theMovie, Handle *dataRef, OSType *dataRefType)
  1062.  THREEWORDINLINE(0x303C, 0x1D2, 0xAAAA);
  1063. extern pascal OSErr SetMovieColorTable(Movie theMovie, CTabHandle ctab)
  1064.  THREEWORDINLINE(0x303C, 0x205, 0xAAAA);
  1065. extern pascal OSErr GetMovieColorTable(Movie theMovie, CTabHandle *ctab)
  1066.  THREEWORDINLINE(0x303C, 0x206, 0xAAAA);
  1067. extern pascal void FlattenMovie(Movie theMovie, long movieFlattenFlags, const FSSpec *theFile, OSType creator, ScriptCode scriptTag, long createMovieFileFlags, short *resId, ConstStr255Param resName)
  1068.  THREEWORDINLINE(0x303C, 0x19B, 0xAAAA);
  1069. extern pascal Movie FlattenMovieData(Movie theMovie, long movieFlattenFlags, const FSSpec *theFile, OSType creator, ScriptCode scriptTag, long createMovieFileFlags)
  1070.  THREEWORDINLINE(0x303C, 0x19C, 0xAAAA);
  1071. extern pascal void SetMovieProgressProc(Movie theMovie, MovieProgressUPP p, long refcon)
  1072.  THREEWORDINLINE(0x303C, 0x19A, 0xAAAA);
  1073. /*************************
  1074. * Video Media routines
  1075. **************************/
  1076. extern pascal HandlerError GetVideoMediaGraphicsMode(MediaHandler mh, long *graphicsMode, RGBColor *opColor)
  1077.  FIVEWORDINLINE(0x2F3C, 0x8, 0x101, 0x7000, 0xA82A);
  1078. extern pascal HandlerError SetVideoMediaGraphicsMode(MediaHandler mh, long graphicsMode, const RGBColor *opColor)
  1079.  FIVEWORDINLINE(0x2F3C, 0x8, 0x102, 0x7000, 0xA82A);
  1080. /*************************
  1081. * Sound Media routines
  1082. **************************/
  1083. extern pascal HandlerError GetSoundMediaBalance(MediaHandler mh, short *balance)
  1084.  FIVEWORDINLINE(0x2F3C, 0x4, 0x101, 0x7000, 0xA82A);
  1085. extern pascal HandlerError SetSoundMediaBalance(MediaHandler mh, short balance)
  1086.  FIVEWORDINLINE(0x2F3C, 0x2, 0x102, 0x7000, 0xA82A);
  1087. /*************************
  1088. * Text Media routines
  1089. **************************/
  1090. /* Return displayFlags for TextProc */
  1091.  
  1092. enum {
  1093.     txtProcDefaultDisplay        = 0,                            /*    Use the media's default*/
  1094.     txtProcDontDisplay            = 1,                            /*    Don't display the text*/
  1095.     txtProcDoDisplay            = 2                                /*    Do display the text*/
  1096. };
  1097.  
  1098. extern pascal ComponentResult SetTextProc(MediaHandler mh, TextMediaUPP TextProc, long refcon)
  1099.  FIVEWORDINLINE(0x2F3C, 0x8, 0x101, 0x7000, 0xA82A);
  1100. extern pascal ComponentResult AddTextSample(MediaHandler mh, Ptr text, unsigned long size, short fontNumber, short fontSize, short textFace, RGBColor *textColor, RGBColor *backColor, short textJustification, Rect *textBox, long displayFlags, TimeValue scrollDelay, short hiliteStart, short hiliteEnd, RGBColor *rgbHiliteColor, TimeValue duration, TimeValue *sampleTime)
  1101.  FIVEWORDINLINE(0x2F3C, 0x34, 0x102, 0x7000, 0xA82A);
  1102. extern pascal ComponentResult AddTESample(MediaHandler mh, TEHandle hTE, RGBColor *backColor, short textJustification, Rect *textBox, long displayFlags, TimeValue scrollDelay, short hiliteStart, short hiliteEnd, RGBColor *rgbHiliteColor, TimeValue duration, TimeValue *sampleTime)
  1103.  FIVEWORDINLINE(0x2F3C, 0x26, 0x103, 0x7000, 0xA82A);
  1104. extern pascal ComponentResult AddHiliteSample(MediaHandler mh, short hiliteStart, short hiliteEnd, RGBColor *rgbHiliteColor, TimeValue duration, TimeValue *sampleTime)
  1105.  FIVEWORDINLINE(0x2F3C, 0x10, 0x104, 0x7000, 0xA82A);
  1106.  
  1107. enum {
  1108.     findTextEdgeOK                = 1 << 0,                        /* Okay to find text at specified sample time*/
  1109.     findTextCaseSensitive        = 1 << 1,                        /* Case sensitive search*/
  1110.     findTextReverseSearch        = 1 << 2,                        /* Search from sampleTime backwards*/
  1111.     findTextWrapAround            = 1 << 3,                        /* Wrap search when beginning or end of movie is hit*/
  1112.     findTextUseOffset            = 1 << 4                        /* Begin search at the given character offset into sample rather than edge*/
  1113. };
  1114.  
  1115. extern pascal ComponentResult FindNextText(MediaHandler mh, Ptr text, long size, short findFlags, TimeValue startTime, TimeValue *foundTime, TimeValue *foundDuration, long *offset)
  1116.  FIVEWORDINLINE(0x2F3C, 0x1A, 0x105, 0x7000, 0xA82A);
  1117. extern pascal ComponentResult HiliteTextSample(MediaHandler mh, TimeValue sampleTime, short hiliteStart, short hiliteEnd, RGBColor *rgbHiliteColor)
  1118.  FIVEWORDINLINE(0x2F3C, 0xC, 0x106, 0x7000, 0xA82A);
  1119.  
  1120. enum {
  1121.     dropShadowOffsetType        = 'drpo',
  1122.     dropShadowTranslucencyType    = 'drpt'
  1123. };
  1124.  
  1125. extern pascal ComponentResult SetTextSampleData(MediaHandler mh, void *data, OSType dataType)
  1126.  FIVEWORDINLINE(0x2F3C, 0x8, 0x107, 0x7000, 0xA82A);
  1127. extern pascal OSErr MovieSearchText(Movie theMovie, Ptr text, long size, long searchFlags, Track *searchTrack, TimeValue *searchTime, long *searchOffset)
  1128.  THREEWORDINLINE(0x303C, 0x207, 0xAAAA);
  1129. extern pascal void GetPosterBox(Movie theMovie, Rect *boxRect)
  1130.  THREEWORDINLINE(0x303C, 0x16F, 0xAAAA);
  1131. extern pascal void SetPosterBox(Movie theMovie, const Rect *boxRect)
  1132.  THREEWORDINLINE(0x303C, 0x170, 0xAAAA);
  1133. extern pascal RgnHandle GetMovieSegmentDisplayBoundsRgn(Movie theMovie, TimeValue time, TimeValue duration)
  1134.  THREEWORDINLINE(0x303C, 0x16C, 0xAAAA);
  1135. extern pascal RgnHandle GetTrackSegmentDisplayBoundsRgn(Track theTrack, TimeValue time, TimeValue duration)
  1136.  THREEWORDINLINE(0x303C, 0x16B, 0xAAAA);
  1137. extern pascal void SetMovieCoverProcs(Movie theMovie, MovieRgnCoverUPP uncoverProc, MovieRgnCoverUPP coverProc, long refcon)
  1138.  THREEWORDINLINE(0x303C, 0x179, 0xAAAA);
  1139. extern pascal OSErr GetMovieCoverProcs(Movie theMovie, MovieRgnCoverUPP *uncoverProc, MovieRgnCoverUPP *coverProc, long *refcon)
  1140.  THREEWORDINLINE(0x303C, 0x1DD, 0xAAAA);
  1141. extern pascal ComponentResult GetTrackStatus(Track theTrack)
  1142.  THREEWORDINLINE(0x303C, 0x172, 0xAAAA);
  1143. extern pascal ComponentResult GetMovieStatus(Movie theMovie, Track *firstProblemTrack)
  1144.  THREEWORDINLINE(0x303C, 0x173, 0xAAAA);
  1145. /****
  1146.     Movie Controller support routines
  1147. ****/
  1148. extern pascal ComponentInstance NewMovieController(Movie theMovie, const Rect *movieRect, long someFlags)
  1149.  THREEWORDINLINE(0x303C, 0x18A, 0xAAAA);
  1150. extern pascal void DisposeMovieController(ComponentInstance mc)
  1151.  THREEWORDINLINE(0x303C, 0x18B, 0xAAAA);
  1152. extern pascal void ShowMovieInformation(Movie theMovie, ModalFilterUPP filterProc, long refCon)
  1153.  THREEWORDINLINE(0x303C, 0x209, 0xAAAA);
  1154. /*****
  1155.     Scrap routines
  1156. *****/
  1157. extern pascal OSErr PutMovieOnScrap(Movie theMovie, long movieScrapFlags)
  1158.  THREEWORDINLINE(0x303C, 0x18C, 0xAAAA);
  1159. extern pascal Movie NewMovieFromScrap(long newMovieFlags)
  1160.  THREEWORDINLINE(0x303C, 0x18D, 0xAAAA);
  1161. /*****
  1162.     DataRef routines
  1163. *****/
  1164. extern pascal OSErr GetMediaDataRef(Media theMedia, short index, Handle *dataRef, OSType *dataRefType, long *dataRefAttributes)
  1165.  THREEWORDINLINE(0x303C, 0x197, 0xAAAA);
  1166. extern pascal OSErr SetMediaDataRef(Media theMedia, short index, Handle dataRef, OSType dataRefType)
  1167.  THREEWORDINLINE(0x303C, 0x1C9, 0xAAAA);
  1168. extern pascal OSErr SetMediaDataRefAttributes(Media theMedia, short index, long dataRefAttributes)
  1169.  THREEWORDINLINE(0x303C, 0x1CA, 0xAAAA);
  1170. extern pascal OSErr AddMediaDataRef(Media theMedia, short *index, Handle dataRef, OSType dataRefType)
  1171.  THREEWORDINLINE(0x303C, 0x198, 0xAAAA);
  1172. extern pascal OSErr GetMediaDataRefCount(Media theMedia, short *count)
  1173.  THREEWORDINLINE(0x303C, 0x199, 0xAAAA);
  1174. /*****
  1175.     Playback hint routines
  1176. *****/
  1177. extern pascal void SetMoviePlayHints(Movie theMovie, long flags, long flagsMask)
  1178.  THREEWORDINLINE(0x303C, 0x1A1, 0xAAAA);
  1179. extern pascal void SetMediaPlayHints(Media theMedia, long flags, long flagsMask)
  1180.  THREEWORDINLINE(0x303C, 0x1A2, 0xAAAA);
  1181. /*****
  1182.     Load time track hints
  1183. *****/
  1184.  
  1185. enum {
  1186.     preloadAlways                = 1L << 0,
  1187.     preloadOnlyIfEnabled        = 1L << 1
  1188. };
  1189.  
  1190. extern pascal void SetTrackLoadSettings(Track theTrack, TimeValue preloadTime, TimeValue preloadDuration, long preloadFlags, long defaultHints)
  1191.  THREEWORDINLINE(0x303C, 0x1E3, 0xAAAA);
  1192. extern pascal void GetTrackLoadSettings(Track theTrack, TimeValue *preloadTime, TimeValue *preloadDuration, long *preloadFlags, long *defaultHints)
  1193.  THREEWORDINLINE(0x303C, 0x1E4, 0xAAAA);
  1194.  
  1195. enum {
  1196.     MovieControllerComponentType = 'play'
  1197. };
  1198.  
  1199. typedef ComponentInstance MovieController;
  1200.  
  1201.  
  1202. enum {
  1203.     mcActionIdle                = 1,                            /* no param*/
  1204.     mcActionDraw                = 2,                            /* param is WindowPtr*/
  1205.     mcActionActivate            = 3,                            /* no param*/
  1206.     mcActionDeactivate            = 4,                            /* no param*/
  1207.     mcActionMouseDown            = 5,                            /* param is pointer to EventRecord*/
  1208.     mcActionKey                    = 6,                            /* param is pointer to EventRecord*/
  1209.     mcActionPlay                = 8,                            /* param is Fixed, play rate*/
  1210.     mcActionGoToTime            = 12,                            /* param is TimeRecord*/
  1211.     mcActionSetVolume            = 14,                            /* param is a short*/
  1212.     mcActionGetVolume            = 15,                            /* param is pointer to a short*/
  1213.     mcActionStep                = 18,                            /* param is number of steps (short)*/
  1214.     mcActionSetLooping            = 21,                            /* param is Boolean*/
  1215.     mcActionGetLooping            = 22,                            /* param is pointer to a Boolean*/
  1216.     mcActionSetLoopIsPalindrome    = 23,                            /* param is Boolean*/
  1217.     mcActionGetLoopIsPalindrome    = 24,                            /* param is pointer to a Boolean*/
  1218.     mcActionSetGrowBoxBounds    = 25,                            /* param is a Rect*/
  1219.     mcActionControllerSizeChanged = 26,                            /* no param*/
  1220.     mcActionSetSelectionBegin    = 29,                            /* param is TimeRecord*/
  1221.     mcActionSetSelectionDuration = 30,                            /* param is TimeRecord, action only taken on set-duration*/
  1222.     mcActionSetKeysEnabled        = 32,                            /* param is Boolean*/
  1223.     mcActionGetKeysEnabled        = 33,                            /* param is pointer to Boolean*/
  1224.     mcActionSetPlaySelection    = 34,                            /* param is Boolean*/
  1225.     mcActionGetPlaySelection    = 35,                            /* param is pointer to Boolean*/
  1226.     mcActionSetUseBadge            = 36,                            /* param is Boolean*/
  1227.     mcActionGetUseBadge            = 37,                            /* param is pointer to Boolean*/
  1228.     mcActionSetFlags            = 38,                            /* param is long of flags*/
  1229.     mcActionGetFlags            = 39,                            /* param is pointer to a long of flags*/
  1230.     mcActionSetPlayEveryFrame    = 40,                            /* param is Boolean*/
  1231.     mcActionGetPlayEveryFrame    = 41,                            /* param is pointer to Boolean*/
  1232.     mcActionGetPlayRate            = 42,                            /* param is pointer to Fixed*/
  1233.     mcActionShowBalloon            = 43,                            /* param is a pointer to a boolean. set to false to stop balloon*/
  1234.     mcActionBadgeClick            = 44,                            /* param is pointer to Boolean. set to false to ignore click*/
  1235.     mcActionMovieClick            = 45,                            /* param is pointer to event record. change “what” to nullEvt to kill click*/
  1236.     mcActionSuspend                = 46,                            /* no param*/
  1237.     mcActionResume                = 47,                            /* no param*/
  1238.     mcActionSetControllerKeysEnabled = 48,                        /* param is Boolean*/
  1239.     mcActionGetTimeSliderRect    = 49,                            /* param is pointer to rect*/
  1240.     mcActionMovieEdited            = 50,                            /* no param*/
  1241.     mcActionGetDragEnabled        = 51,                            /* param is pointer to Boolean*/
  1242.     mcActionSetDragEnabled        = 52                            /* param is Boolean*/
  1243. };
  1244.  
  1245. typedef short mcAction;
  1246.  
  1247.  
  1248. enum {
  1249.     mcFlagSuppressMovieFrame    = 1 << 0,
  1250.     mcFlagSuppressStepButtons    = 1 << 1,
  1251.     mcFlagSuppressSpeakerButton    = 1 << 2,
  1252.     mcFlagsUseWindowPalette        = 1 << 3,
  1253.     mcFlagsDontInvalidate        = 1 << 4
  1254. };
  1255.  
  1256. enum {
  1257.     mcPositionDontInvalidate    = 1 << 5
  1258. };
  1259.  
  1260. typedef unsigned long mcFlags;
  1261.  
  1262. typedef pascal Boolean (*MCActionFilterProcPtr)(MovieController mc, short *action, void *params);
  1263. typedef pascal Boolean (*MCActionFilterWithRefConProcPtr)(MovieController mc, short action, void *params, long refCon);
  1264.  
  1265. #if GENERATINGCFM
  1266. typedef UniversalProcPtr MCActionFilterUPP;
  1267. typedef UniversalProcPtr MCActionFilterWithRefConUPP;
  1268. #else
  1269. typedef MCActionFilterProcPtr MCActionFilterUPP;
  1270. typedef MCActionFilterWithRefConProcPtr MCActionFilterWithRefConUPP;
  1271. #endif
  1272.  
  1273.  
  1274. enum {
  1275.     mcInfoUndoAvailable            = 1 << 0,
  1276.     mcInfoCutAvailable            = 1 << 1,
  1277.     mcInfoCopyAvailable            = 1 << 2,
  1278.     mcInfoPasteAvailable        = 1 << 3,
  1279.     mcInfoClearAvailable        = 1 << 4,
  1280.     mcInfoHasSound                = 1 << 5,
  1281.     mcInfoIsPlaying                = 1 << 6,
  1282.     mcInfoIsLooping                = 1 << 7,
  1283.     mcInfoIsInPalindrome        = 1 << 8,
  1284.     mcInfoEditingEnabled        = 1 << 9
  1285. };
  1286.  
  1287. /* menu item codes*/
  1288. enum {
  1289.     mcMenuUndo                    = 1,
  1290.     mcMenuCut                    = 3,
  1291.     mcMenuCopy                    = 4,
  1292.     mcMenuPaste                    = 5,
  1293.     mcMenuClear                    = 6
  1294. };
  1295.  
  1296. /* target management */
  1297. extern pascal ComponentResult MCSetMovie(MovieController mc, Movie theMovie, WindowPtr movieWindow, Point where)
  1298.  FIVEWORDINLINE(0x2F3C, 0xC, 0x2, 0x7000, 0xA82A);
  1299. extern pascal Movie MCGetIndMovie(MovieController mc, short index)
  1300.  FIVEWORDINLINE(0x2F3C, 0x2, 0x5, 0x7000, 0xA82A);
  1301. #define MCGetMovie(mc) MCGetIndMovie(mc, 0)
  1302. extern pascal ComponentResult MCRemoveMovie(MovieController mc)
  1303.  FIVEWORDINLINE(0x2F3C, 0, 0x6, 0x7000, 0xA82A);
  1304. /* event handling etc. */
  1305. extern pascal ComponentResult MCIsPlayerEvent(MovieController mc, const EventRecord *e)
  1306.  FIVEWORDINLINE(0x2F3C, 0x4, 0x7, 0x7000, 0xA82A);
  1307. /* obsolete. use MCSetActionFilterWithRefCon instead. */
  1308. extern pascal ComponentResult MCSetActionFilter(MovieController mc, MCActionFilterUPP blob)
  1309.  FIVEWORDINLINE(0x2F3C, 0x4, 0x8, 0x7000, 0xA82A);
  1310. /*
  1311.     proc is of the form:
  1312.         Boolean userPlayerFilter(MovieController mc, short *action, void *params) =
  1313.     proc returns TRUE if it handles the action, FALSE if not
  1314.     action is passed as a VAR so that it could be changed by filter (ick)
  1315.     this is consistent with the current dialog manager stuff
  1316.     params is any potential parameters that go with the action <triple ick> 
  1317.         such as set playback rate to xxx.
  1318. */
  1319. extern pascal ComponentResult MCDoAction(MovieController mc, short action, void *params)
  1320.  FIVEWORDINLINE(0x2F3C, 0x6, 0x9, 0x7000, 0xA82A);
  1321. /* state type things */
  1322. extern pascal ComponentResult MCSetControllerAttached(MovieController mc, Boolean attach)
  1323.  FIVEWORDINLINE(0x2F3C, 0x2, 0xA, 0x7000, 0xA82A);
  1324. extern pascal ComponentResult MCIsControllerAttached(MovieController mc)
  1325.  FIVEWORDINLINE(0x2F3C, 0, 0xB, 0x7000, 0xA82A);
  1326. extern pascal ComponentResult MCSetControllerPort(MovieController mc, CGrafPtr gp)
  1327.  FIVEWORDINLINE(0x2F3C, 0x4, 0xC, 0x7000, 0xA82A);
  1328. extern pascal CGrafPtr MCGetControllerPort(MovieController mc)
  1329.  FIVEWORDINLINE(0x2F3C, 0, 0xD, 0x7000, 0xA82A);
  1330. extern pascal ComponentResult MCSetVisible(MovieController mc, Boolean visible)
  1331.  FIVEWORDINLINE(0x2F3C, 0x2, 0xE, 0x7000, 0xA82A);
  1332. extern pascal ComponentResult MCGetVisible(MovieController mc)
  1333.  FIVEWORDINLINE(0x2F3C, 0, 0xF, 0x7000, 0xA82A);
  1334. extern pascal ComponentResult MCGetControllerBoundsRect(MovieController mc, Rect *bounds)
  1335.  FIVEWORDINLINE(0x2F3C, 0x4, 0x10, 0x7000, 0xA82A);
  1336. extern pascal ComponentResult MCSetControllerBoundsRect(MovieController mc, const Rect *bounds)
  1337.  FIVEWORDINLINE(0x2F3C, 0x4, 0x11, 0x7000, 0xA82A);
  1338. extern pascal RgnHandle MCGetControllerBoundsRgn(MovieController mc)
  1339.  FIVEWORDINLINE(0x2F3C, 0, 0x12, 0x7000, 0xA82A);
  1340. extern pascal RgnHandle MCGetWindowRgn(MovieController mc, WindowPtr w)
  1341.  FIVEWORDINLINE(0x2F3C, 0x4, 0x13, 0x7000, 0xA82A);
  1342. /* other stuff */
  1343. extern pascal ComponentResult MCMovieChanged(MovieController mc, Movie m)
  1344.  FIVEWORDINLINE(0x2F3C, 0x4, 0x14, 0x7000, 0xA82A);
  1345. /*
  1346.     called when the app has changed thing about the movie (like bounding rect) or rate. So that we
  1347.         can update our graphical (and internal) state accordingly.
  1348. */
  1349. extern pascal ComponentResult MCSetDuration(MovieController mc, TimeValue duration)
  1350.  FIVEWORDINLINE(0x2F3C, 0x4, 0x15, 0x7000, 0xA82A);
  1351. /*
  1352.     duration to use for time slider -- will be reset next time MCMovieChanged is called
  1353.         or MCSetMovie is called
  1354. */
  1355. extern pascal TimeValue MCGetCurrentTime(MovieController mc, TimeScale *scale)
  1356.  FIVEWORDINLINE(0x2F3C, 0x4, 0x16, 0x7000, 0xA82A);
  1357. /*
  1358.     returns the time value and the time scale it is on. if there are no movies, the
  1359.         time scale is passed back as 0. scale is an optional parameter
  1360.  
  1361. */
  1362. extern pascal ComponentResult MCNewAttachedController(MovieController mc, Movie theMovie, WindowPtr w, Point where)
  1363.  FIVEWORDINLINE(0x2F3C, 0xC, 0x17, 0x7000, 0xA82A);
  1364. /*
  1365.     makes m the only movie attached to the controller. makes the controller visible.
  1366.     the window and where parameters are passed a long to MCSetMovie and behave as
  1367.     described there
  1368. */
  1369. extern pascal ComponentResult MCDraw(MovieController mc, WindowPtr w)
  1370.  FIVEWORDINLINE(0x2F3C, 0x4, 0x18, 0x7000, 0xA82A);
  1371. extern pascal ComponentResult MCActivate(MovieController mc, WindowPtr w, Boolean activate)
  1372.  FIVEWORDINLINE(0x2F3C, 0x6, 0x19, 0x7000, 0xA82A);
  1373. extern pascal ComponentResult MCIdle(MovieController mc)
  1374.  FIVEWORDINLINE(0x2F3C, 0, 0x1A, 0x7000, 0xA82A);
  1375. extern pascal ComponentResult MCKey(MovieController mc, SInt8 key, long modifiers)
  1376.  FIVEWORDINLINE(0x2F3C, 0x6, 0x1B, 0x7000, 0xA82A);
  1377. extern pascal ComponentResult MCClick(MovieController mc, WindowPtr w, Point where, long when, long modifiers)
  1378.  FIVEWORDINLINE(0x2F3C, 0x10, 0x1C, 0x7000, 0xA82A);
  1379. /*
  1380.     calls for editing
  1381. */
  1382. extern pascal ComponentResult MCEnableEditing(MovieController mc, Boolean enabled)
  1383.  FIVEWORDINLINE(0x2F3C, 0x2, 0x1D, 0x7000, 0xA82A);
  1384. extern pascal long MCIsEditingEnabled(MovieController mc)
  1385.  FIVEWORDINLINE(0x2F3C, 0, 0x1E, 0x7000, 0xA82A);
  1386. extern pascal Movie MCCopy(MovieController mc)
  1387.  FIVEWORDINLINE(0x2F3C, 0, 0x1F, 0x7000, 0xA82A);
  1388. extern pascal Movie MCCut(MovieController mc)
  1389.  FIVEWORDINLINE(0x2F3C, 0, 0x20, 0x7000, 0xA82A);
  1390. extern pascal ComponentResult MCPaste(MovieController mc, Movie srcMovie)
  1391.  FIVEWORDINLINE(0x2F3C, 0x4, 0x21, 0x7000, 0xA82A);
  1392. extern pascal ComponentResult MCClear(MovieController mc)
  1393.  FIVEWORDINLINE(0x2F3C, 0, 0x22, 0x7000, 0xA82A);
  1394. extern pascal ComponentResult MCUndo(MovieController mc)
  1395.  FIVEWORDINLINE(0x2F3C, 0, 0x23, 0x7000, 0xA82A);
  1396. /*
  1397.  *    somewhat special stuff
  1398.  */
  1399. extern pascal ComponentResult MCPositionController(MovieController mc, const Rect *movieRect, const Rect *controllerRect, long someFlags)
  1400.  FIVEWORDINLINE(0x2F3C, 0xC, 0x24, 0x7000, 0xA82A);
  1401. extern pascal ComponentResult MCGetControllerInfo(MovieController mc, long *someFlags)
  1402.  FIVEWORDINLINE(0x2F3C, 0x4, 0x25, 0x7000, 0xA82A);
  1403. extern pascal ComponentResult MCSetClip(MovieController mc, RgnHandle theClip, RgnHandle movieClip)
  1404.  FIVEWORDINLINE(0x2F3C, 0x8, 0x28, 0x7000, 0xA82A);
  1405. extern pascal ComponentResult MCGetClip(MovieController mc, RgnHandle *theClip, RgnHandle *movieClip)
  1406.  FIVEWORDINLINE(0x2F3C, 0x8, 0x29, 0x7000, 0xA82A);
  1407. extern pascal ComponentResult MCDrawBadge(MovieController mc, RgnHandle movieRgn, RgnHandle *badgeRgn)
  1408.  FIVEWORDINLINE(0x2F3C, 0x8, 0x2A, 0x7000, 0xA82A);
  1409. extern pascal ComponentResult MCSetUpEditMenu(MovieController mc, long modifiers, MenuHandle mh)
  1410.  FIVEWORDINLINE(0x2F3C, 0x8, 0x2B, 0x7000, 0xA82A);
  1411. extern pascal ComponentResult MCGetMenuString(MovieController mc, long modifiers, short item, Str255 aString)
  1412.  FIVEWORDINLINE(0x2F3C, 0xA, 0x2C, 0x7000, 0xA82A);
  1413. extern pascal ComponentResult MCSetActionFilterWithRefCon(MovieController mc, MCActionFilterWithRefConUPP blob, long refCon)
  1414.  FIVEWORDINLINE(0x2F3C, 0x8, 0x2D, 0x7000, 0xA82A);
  1415.  
  1416. enum {
  1417.     kMCSetMovieSelect            = 0x2,
  1418.     kMCGetIndMovieSelect        = 0x5,
  1419.     kMCRemoveMovieSelect        = 0x6,
  1420.     kMCIsPlayerEventSelect        = 0x7,
  1421.     kMCSetActionFilterSelect    = 0x8,
  1422.     kMCDoActionSelect            = 0x9,
  1423.     kMCSetControllerAttachedSelect = 0xA,
  1424.     kMCIsControllerAttachedSelect = 0xB,
  1425.     kMCSetControllerPortSelect    = 0xC,
  1426.     kMCGetControllerPortSelect    = 0xD,
  1427.     kMCSetVisibleSelect            = 0xE,
  1428.     kMCGetVisibleSelect            = 0xF,
  1429.     kMCGetControllerBoundsRectSelect = 0x10,
  1430.     kMCSetControllerBoundsRectSelect = 0x11,
  1431.     kMCGetControllerBoundsRgnSelect = 0x12,
  1432.     kMCGetWindowRgnSelect        = 0x13,
  1433.     kMCMovieChangedSelect        = 0x14,
  1434.     kMCSetDurationSelect        = 0x15,
  1435.     kMCGetCurrentTimeSelect        = 0x16,
  1436.     kMCNewAttachedControllerSelect = 0x17,
  1437.     kMCDrawSelect                = 0x18,
  1438.     kMCActivateSelect            = 0x19,
  1439.     kMCIdleSelect                = 0x1A,
  1440.     kMCKeySelect                = 0x1B,
  1441.     kMCClickSelect                = 0x1C,
  1442.     kMCEnableEditingSelect        = 0x1D,
  1443.     kMCIsEditingEnabledSelect    = 0x1E,
  1444.     kMCCopySelect                = 0x1F,
  1445.     kMCCutSelect                = 0x20,
  1446.     kMCPasteSelect                = 0x21,
  1447.     kMCClearSelect                = 0x22,
  1448.     kMCUndoSelect                = 0x23,
  1449.     kMCPositionControllerSelect    = 0x24,
  1450.     kMCGetControllerInfoSelect    = 0x25,
  1451.     kMCSetClipSelect            = 0x28,
  1452.     kMCGetClipSelect            = 0x29,
  1453.     kMCDrawBadgeSelect            = 0x2A,
  1454.     kMCSetUpEditMenuSelect        = 0x2B,
  1455.     kMCGetMenuStringSelect        = 0x2C,
  1456.     kMCSetActionFilterWithRefConSelect = 0x2D
  1457. };
  1458.  
  1459. /****************************************
  1460. *                                        *
  1461. *          T  I  M  E  B  A  S  E            *
  1462. *                                        *
  1463. ****************************************/
  1464. extern pascal TimeBase NewTimeBase(void)
  1465.  THREEWORDINLINE(0x303C, 0xA5, 0xAAAA);
  1466. extern pascal void DisposeTimeBase(TimeBase tb)
  1467.  THREEWORDINLINE(0x303C, 0xB6, 0xAAAA);
  1468. extern pascal TimeValue GetTimeBaseTime(TimeBase tb, TimeScale s, TimeRecord *tr)
  1469.  THREEWORDINLINE(0x303C, 0xA6, 0xAAAA);
  1470. extern pascal void SetTimeBaseTime(TimeBase tb, const TimeRecord *tr)
  1471.  THREEWORDINLINE(0x303C, 0xA7, 0xAAAA);
  1472. extern pascal void SetTimeBaseValue(TimeBase tb, TimeValue t, TimeScale s)
  1473.  THREEWORDINLINE(0x303C, 0xA8, 0xAAAA);
  1474. extern pascal Fixed GetTimeBaseRate(TimeBase tb)
  1475.  THREEWORDINLINE(0x303C, 0xA9, 0xAAAA);
  1476. extern pascal void SetTimeBaseRate(TimeBase tb, Fixed r)
  1477.  THREEWORDINLINE(0x303C, 0xAA, 0xAAAA);
  1478. extern pascal TimeValue GetTimeBaseStartTime(TimeBase tb, TimeScale s, TimeRecord *tr)
  1479.  THREEWORDINLINE(0x303C, 0xAB, 0xAAAA);
  1480. extern pascal void SetTimeBaseStartTime(TimeBase tb, const TimeRecord *tr)
  1481.  THREEWORDINLINE(0x303C, 0xAC, 0xAAAA);
  1482. extern pascal TimeValue GetTimeBaseStopTime(TimeBase tb, TimeScale s, TimeRecord *tr)
  1483.  THREEWORDINLINE(0x303C, 0xAD, 0xAAAA);
  1484. extern pascal void SetTimeBaseStopTime(TimeBase tb, const TimeRecord *tr)
  1485.  THREEWORDINLINE(0x303C, 0xAE, 0xAAAA);
  1486. extern pascal long GetTimeBaseFlags(TimeBase tb)
  1487.  THREEWORDINLINE(0x303C, 0xB1, 0xAAAA);
  1488. extern pascal void SetTimeBaseFlags(TimeBase tb, long timeBaseFlags)
  1489.  THREEWORDINLINE(0x303C, 0xB2, 0xAAAA);
  1490. extern pascal void SetTimeBaseMasterTimeBase(TimeBase slave, TimeBase master, const TimeRecord *slaveZero)
  1491.  THREEWORDINLINE(0x303C, 0xB4, 0xAAAA);
  1492. extern pascal TimeBase GetTimeBaseMasterTimeBase(TimeBase tb)
  1493.  THREEWORDINLINE(0x303C, 0xAF, 0xAAAA);
  1494. extern pascal void SetTimeBaseMasterClock(TimeBase slave, Component clockMeister, const TimeRecord *slaveZero)
  1495.  THREEWORDINLINE(0x303C, 0xB3, 0xAAAA);
  1496. extern pascal ComponentInstance GetTimeBaseMasterClock(TimeBase tb)
  1497.  THREEWORDINLINE(0x303C, 0xB0, 0xAAAA);
  1498. extern pascal void ConvertTime(TimeRecord *inout, TimeBase newBase)
  1499.  THREEWORDINLINE(0x303C, 0xB5, 0xAAAA);
  1500. extern pascal void ConvertTimeScale(TimeRecord *inout, TimeScale newScale)
  1501.  THREEWORDINLINE(0x303C, 0xB7, 0xAAAA);
  1502. extern pascal void AddTime(TimeRecord *dst, const TimeRecord *src)
  1503.  THREEWORDINLINE(0x303C, 0x10C, 0xAAAA);
  1504. extern pascal void SubtractTime(TimeRecord *dst, const TimeRecord *src)
  1505.  THREEWORDINLINE(0x303C, 0x10D, 0xAAAA);
  1506. extern pascal long GetTimeBaseStatus(TimeBase tb, TimeRecord *unpinnedTime)
  1507.  THREEWORDINLINE(0x303C, 0x10B, 0xAAAA);
  1508. extern pascal void SetTimeBaseZero(TimeBase tb, TimeRecord *zero)
  1509.  THREEWORDINLINE(0x303C, 0x128, 0xAAAA);
  1510. extern pascal Fixed GetTimeBaseEffectiveRate(TimeBase tb)
  1511.  THREEWORDINLINE(0x303C, 0x124, 0xAAAA);
  1512. /****************************************
  1513. *                                        *
  1514. *          C  A  L  L  B  A  C  K             *
  1515. *                                        *
  1516. ****************************************/
  1517. extern pascal QTCallBack NewCallBack(TimeBase tb, short cbType)
  1518.  THREEWORDINLINE(0x303C, 0xEB, 0xAAAA);
  1519. extern pascal void DisposeCallBack(QTCallBack cb)
  1520.  THREEWORDINLINE(0x303C, 0xEC, 0xAAAA);
  1521. extern pascal short GetCallBackType(QTCallBack cb)
  1522.  THREEWORDINLINE(0x303C, 0xED, 0xAAAA);
  1523. extern pascal TimeBase GetCallBackTimeBase(QTCallBack cb)
  1524.  THREEWORDINLINE(0x303C, 0xEE, 0xAAAA);
  1525. extern pascal OSErr CallMeWhen(QTCallBack cb, QTCallBackUPP callBackProc, long refCon, long param1, long param2, long param3)
  1526.  THREEWORDINLINE(0x303C, 0xB8, 0xAAAA);
  1527. extern pascal void CancelCallBack(QTCallBack cb)
  1528.  THREEWORDINLINE(0x303C, 0xB9, 0xAAAA);
  1529. /****************************************
  1530. *                                        *
  1531. *          C L O C K   C A L L B A C K      *
  1532. *                S U P P O R T              *
  1533. *                                        *
  1534. ****************************************/
  1535. extern pascal OSErr AddCallBackToTimeBase(QTCallBack cb)
  1536.  THREEWORDINLINE(0x303C, 0x129, 0xAAAA);
  1537. extern pascal OSErr RemoveCallBackFromTimeBase(QTCallBack cb)
  1538.  THREEWORDINLINE(0x303C, 0x12A, 0xAAAA);
  1539. extern pascal QTCallBack GetFirstCallBack(TimeBase tb)
  1540.  THREEWORDINLINE(0x303C, 0x12B, 0xAAAA);
  1541. extern pascal QTCallBack GetNextCallBack(QTCallBack cb)
  1542.  THREEWORDINLINE(0x303C, 0x12C, 0xAAAA);
  1543. extern pascal void ExecuteCallBack(QTCallBack cb)
  1544.  THREEWORDINLINE(0x303C, 0x12D, 0xAAAA);
  1545. /****************************************
  1546. *                                        *
  1547. *          S Y N C    T A S K S              *
  1548. *                S U P P O R T              *
  1549. *                                        *
  1550. ****************************************/
  1551. extern pascal OSErr QueueSyncTask(QTSyncTaskPtr task)
  1552.  THREEWORDINLINE(0x303C, 0x203, 0xAAAA);
  1553. extern pascal OSErr DequeueSyncTask(QTSyncTaskPtr qElem)
  1554.  THREEWORDINLINE(0x303C, 0x204, 0xAAAA);
  1555. /* UPP call backs */
  1556.  
  1557. #if GENERATINGCFM
  1558. #else
  1559. #endif
  1560.  
  1561. enum {
  1562.     uppMovieRgnCoverProcInfo = kPascalStackBased
  1563.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  1564.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Movie)))
  1565.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(RgnHandle)))
  1566.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))),
  1567.     uppMovieProgressProcInfo = kPascalStackBased
  1568.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  1569.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Movie)))
  1570.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  1571.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short)))
  1572.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(Fixed)))
  1573.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long))),
  1574.     uppMovieDrawingCompleteProcInfo = kPascalStackBased
  1575.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  1576.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Movie)))
  1577.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))),
  1578.     uppTrackTransferProcInfo = kPascalStackBased
  1579.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  1580.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Track)))
  1581.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))),
  1582.     uppGetMovieProcInfo = kPascalStackBased
  1583.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  1584.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
  1585.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  1586.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void*)))
  1587.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(void*))),
  1588.     uppMoviePreviewCallOutProcInfo = kPascalStackBased
  1589.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  1590.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))),
  1591.     uppMoviesErrorProcInfo = kPascalStackBased
  1592.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(OSErr)))
  1593.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))),
  1594.     uppTextMediaProcInfo = kPascalStackBased
  1595.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  1596.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Handle)))
  1597.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Movie)))
  1598.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short*)))
  1599.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long))),
  1600.     uppQTCallBackProcInfo = kPascalStackBased
  1601.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(QTCallBack)))
  1602.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))),
  1603.     uppQTSyncTaskProcInfo = kPascalStackBased
  1604.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(void*))),
  1605.     uppMCActionFilterProcInfo = kPascalStackBased
  1606.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  1607.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(MovieController)))
  1608.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short*)))
  1609.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void*))),
  1610.     uppMCActionFilterWithRefConProcInfo = kPascalStackBased
  1611.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  1612.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(MovieController)))
  1613.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  1614.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void*)))
  1615.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long)))
  1616. };
  1617.  
  1618. #if GENERATINGCFM
  1619. #define NewMovieRgnCoverProc(userRoutine)        \
  1620.         (MovieRgnCoverUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMovieRgnCoverProcInfo, GetCurrentArchitecture())
  1621. #define NewMovieProgressProc(userRoutine)        \
  1622.         (MovieProgressUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMovieProgressProcInfo, GetCurrentArchitecture())
  1623. #define NewMovieDrawingCompleteProc(userRoutine)        \
  1624.         (MovieDrawingCompleteUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMovieDrawingCompleteProcInfo, GetCurrentArchitecture())
  1625. #define NewTrackTransferProc(userRoutine)        \
  1626.         (TrackTransferUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTrackTransferProcInfo, GetCurrentArchitecture())
  1627. #define NewGetMovieProc(userRoutine)        \
  1628.         (GetMovieUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppGetMovieProcInfo, GetCurrentArchitecture())
  1629. #define NewMoviePreviewCallOutProc(userRoutine)        \
  1630.         (MoviePreviewCallOutUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMoviePreviewCallOutProcInfo, GetCurrentArchitecture())
  1631. #define NewMoviesErrorProc(userRoutine)        \
  1632.         (MoviesErrorUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMoviesErrorProcInfo, GetCurrentArchitecture())
  1633. #define NewTextMediaProc(userRoutine)        \
  1634.         (TextMediaUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTextMediaProcInfo, GetCurrentArchitecture())
  1635. #define NewQTCallBackProc(userRoutine)        \
  1636.         (QTCallBackUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTCallBackProcInfo, GetCurrentArchitecture())
  1637. #define NewQTSyncTaskProc(userRoutine)        \
  1638.         (QTSyncTaskUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTSyncTaskProcInfo, GetCurrentArchitecture())
  1639. #define NewMCActionFilterProc(userRoutine)        \
  1640.         (MCActionFilterUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMCActionFilterProcInfo, GetCurrentArchitecture())
  1641. #define NewMCActionFilterWithRefConProc(userRoutine)        \
  1642.         (MCActionFilterWithRefConUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMCActionFilterWithRefConProcInfo, GetCurrentArchitecture())
  1643. #else
  1644. #define NewMovieRgnCoverProc(userRoutine)        \
  1645.         ((MovieRgnCoverUPP) (userRoutine))
  1646. #define NewMovieProgressProc(userRoutine)        \
  1647.         ((MovieProgressUPP) (userRoutine))
  1648. #define NewMovieDrawingCompleteProc(userRoutine)        \
  1649.         ((MovieDrawingCompleteUPP) (userRoutine))
  1650. #define NewTrackTransferProc(userRoutine)        \
  1651.         ((TrackTransferUPP) (userRoutine))
  1652. #define NewGetMovieProc(userRoutine)        \
  1653.         ((GetMovieUPP) (userRoutine))
  1654. #define NewMoviePreviewCallOutProc(userRoutine)        \
  1655.         ((MoviePreviewCallOutUPP) (userRoutine))
  1656. #define NewMoviesErrorProc(userRoutine)        \
  1657.         ((MoviesErrorUPP) (userRoutine))
  1658. #define NewTextMediaProc(userRoutine)        \
  1659.         ((TextMediaUPP) (userRoutine))
  1660. #define NewQTCallBackProc(userRoutine)        \
  1661.         ((QTCallBackUPP) (userRoutine))
  1662. #define NewQTSyncTaskProc(userRoutine)        \
  1663.         ((QTSyncTaskUPP) (userRoutine))
  1664. #define NewMCActionFilterProc(userRoutine)        \
  1665.         ((MCActionFilterUPP) (userRoutine))
  1666. #define NewMCActionFilterWithRefConProc(userRoutine)        \
  1667.         ((MCActionFilterWithRefConUPP) (userRoutine))
  1668. #endif
  1669.  
  1670. #if GENERATINGCFM
  1671. #define CallMovieRgnCoverProc(userRoutine, theMovie, changedRgn, refcon)        \
  1672.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMovieRgnCoverProcInfo, (theMovie), (changedRgn), (refcon))
  1673. #define CallMovieProgressProc(userRoutine, theMovie, message, whatOperation, percentDone, refcon)        \
  1674.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMovieProgressProcInfo, (theMovie), (message), (whatOperation), (percentDone), (refcon))
  1675. #define CallMovieDrawingCompleteProc(userRoutine, theMovie, refCon)        \
  1676.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMovieDrawingCompleteProcInfo, (theMovie), (refCon))
  1677. #define CallTrackTransferProc(userRoutine, t, refCon)        \
  1678.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTrackTransferProcInfo, (t), (refCon))
  1679. #define CallGetMovieProc(userRoutine, offset, size, dataPtr, refCon)        \
  1680.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppGetMovieProcInfo, (offset), (size), (dataPtr), (refCon))
  1681. #define CallMoviePreviewCallOutProc(userRoutine, refcon)        \
  1682.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMoviePreviewCallOutProcInfo, (refcon))
  1683. #define CallMoviesErrorProc(userRoutine, theErr, refcon)        \
  1684.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMoviesErrorProcInfo, (theErr), (refcon))
  1685. #define CallTextMediaProc(userRoutine, theText, theMovie, displayFlag, refcon)        \
  1686.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTextMediaProcInfo, (theText), (theMovie), (displayFlag), (refcon))
  1687. #define CallQTCallBackProc(userRoutine, cb, refCon)        \
  1688.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQTCallBackProcInfo, (cb), (refCon))
  1689. #define CallQTSyncTaskProc(userRoutine, task)        \
  1690.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQTSyncTaskProcInfo, (task))
  1691. #define CallMCActionFilterProc(userRoutine, mc, action, params)        \
  1692.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMCActionFilterProcInfo, (mc), (action), (params))
  1693. #define CallMCActionFilterWithRefConProc(userRoutine, mc, action, params, refCon)        \
  1694.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMCActionFilterWithRefConProcInfo, (mc), (action), (params), (refCon))
  1695. #else
  1696. #define CallMovieRgnCoverProc(userRoutine, theMovie, changedRgn, refcon)        \
  1697.         (*(userRoutine))((theMovie), (changedRgn), (refcon))
  1698. #define CallMovieProgressProc(userRoutine, theMovie, message, whatOperation, percentDone, refcon)        \
  1699.         (*(userRoutine))((theMovie), (message), (whatOperation), (percentDone), (refcon))
  1700. #define CallMovieDrawingCompleteProc(userRoutine, theMovie, refCon)        \
  1701.         (*(userRoutine))((theMovie), (refCon))
  1702. #define CallTrackTransferProc(userRoutine, t, refCon)        \
  1703.         (*(userRoutine))((t), (refCon))
  1704. #define CallGetMovieProc(userRoutine, offset, size, dataPtr, refCon)        \
  1705.         (*(userRoutine))((offset), (size), (dataPtr), (refCon))
  1706. #define CallMoviePreviewCallOutProc(userRoutine, refcon)        \
  1707.         (*(userRoutine))((refcon))
  1708. #define CallMoviesErrorProc(userRoutine, theErr, refcon)        \
  1709.         (*(userRoutine))((theErr), (refcon))
  1710. #define CallTextMediaProc(userRoutine, theText, theMovie, displayFlag, refcon)        \
  1711.         (*(userRoutine))((theText), (theMovie), (displayFlag), (refcon))
  1712. #define CallQTCallBackProc(userRoutine, cb, refCon)        \
  1713.         (*(userRoutine))((cb), (refCon))
  1714. #define CallQTSyncTaskProc(userRoutine, task)        \
  1715.         (*(userRoutine))((task))
  1716. #define CallMCActionFilterProc(userRoutine, mc, action, params)        \
  1717.         (*(userRoutine))((mc), (action), (params))
  1718. #define CallMCActionFilterWithRefConProc(userRoutine, mc, action, params, refCon)        \
  1719.         (*(userRoutine))((mc), (action), (params), (refCon))
  1720. #endif
  1721.  
  1722.  
  1723. #if PRAGMA_IMPORT_SUPPORTED
  1724. #pragma import off
  1725. #endif
  1726.  
  1727. #if PRAGMA_ALIGN_SUPPORTED
  1728. #pragma options align=reset
  1729. #endif
  1730.  
  1731. #ifdef __cplusplus
  1732. }
  1733. #endif
  1734.  
  1735. #endif /* __MOVIES__ */
  1736.